2016-12-15 3 views
-2

Ich führe zwei Abfragen in Mysql mit "limit":MySQL "Limit" liefert das falsche Ergebnis

Abfrage ein:

SELECT * FROM staff s, department d WHERE s.departId = d.id AND s.statusid = 1 LIMIT 10; 

Ergebnis ein: enter image description here

Abfrage zwei:

SELECT * FROM staff s, department d WHERE s.departId = d.id AND s.statusid = 1 LIMIT 1; 

Ergebnis zwei: enter image description here

Frage:

Ich frage mich, warum die zweite Abfrage Datensatz nicht von id zurückgibt = 100000 statt id = 100001; Danke für die Antwort im Voraus.

+1

gibt es absolut keinen Code um diese Frage zu unterstützen. Alles was hier ist, ist ein Screenshot. –

+2

und Ihre Annahme Rekord ist nicht gut, weder –

+1

hinzufügen 'bestellen von S.ID asc' und es wird – xQbert

Antwort

5

Ja, weil Sie keine order by Klausel angegeben haben und daher die Reihenfolge der zurückgegebenen Daten nicht garantiert ist. Wenn Sie eine bestimmte Reihenfolge für die resultierenden Daten müssen dann Sie festlegen, dass mit order by Klausel wie

order by s.departId desc 
+0

Danke für das Zeigen, was ich nicht wusste. – SaiLiu

+1

@SaiLiu, hast du gesehen, was Fred-ii kommentiert hat? Sagen Sie nicht nur Dank, sondern akzeptieren Sie die Antwort, um Ihre Wertschätzung zu zeigen. muss nicht meine Antwort sein, aber jeder, von dem Sie denken, hat Ihnen am meisten geholfen. – Rahul

+1

@SaiLiu, siehe [Wie funktioniert die Annahme einer Antwort?] (Https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – Chris

3

Weder Ihre Abfragen eine Ordnung gibt, was bedeutet, die Datenbank kostenlos Ihre Daten bestellen aber es will die Abfrage vervollständigen . Wenn Sie von der id Spalte hinzufügen ORDER BY s.id ASC auf Ihre Fragen sortieren möchten:

SELECT * FROM staff s, department d WHERE ... ORDER BY s.id ASC LIMIT 10; 

SELECT * FROM staff s, department d WHERE ... ORDER BY s.id ASC LIMIT 1; 
0

Verwendung order by id Klausel, wenn Sie Daten zurückgeben basierend auf ID aufsteigend order by id desc absteigend

wenn verwenden möchten