2013-07-07 4 views
8

Ich habe gesucht und gesucht und kann keine Antwort auf diese Frage finden, ich frage es wahrscheinlich auf die falsche Art und Weise.Hat MySQL "SELECT LIMIT 1" mit mehreren Datensätzen den ersten Datensatz von oben ausgewählt?

Ich frage eine Mitarbeiterdatenbank ab.

Ich brauche Details basierend auf einer Positions-ID, jedoch könnte es mehrere Datensätze für diese Positions-ID geben, da diese Organisation feste Mitarbeiter und temporäre Mitarbeiter hat, die gegen die gleiche Position agieren.

Also, um den aktuellen Bewohner der Position ID zu bekommen, brauche ich meine Abfrage, um den ersten Datensatz, der der Position Zeichenfolge entspricht, von der TOP DOWN.

wird dies den ersten übereinstimmenden Datensatz von oben auswählen?

SELECT * WHERE `position_id`="00000000" LIMIT 1; 

Vielen Dank im Voraus.

+0

Es wählt den ersten Datensatz aus. Wenn Sie keine Reihenfolge in der Abfrage angegeben haben ... :: shrug :: –

Antwort

8

Sie benötigen eine ORDER BY Klausel, um die Reihenfolge zwischen den einzelnen Datensätzen Ihrer Tabelle zu definieren. Wenn Sie ORDER BY nicht verwenden, können Sie keine feste Reihenfolge zwischen den Datensätzen annehmen, und Sie könnten bei jeder Ausführung der Abfrage eine neue Reihenfolge erhalten.

+0

Danke, ich werde dies angreifen von "ORDER BY id" Ich denke, wie ich die Datensätze in Excel zuerst sortiere. – hammus

+1

Denken Sie daran, dass die ORDER BY ID LIMIT 1 zuerst die gesamte Ergebnismenge sortiert und Ihnen dann die erste Zeile gibt. – flogvit

2

Es wird nur zufällig *. Es gibt keine Möglichkeit zu sagen, welche es sein wird, es sei denn, Sie fügen eine ORDER BY Klausel hinzu.

* Nicht wirklich zufällig, natürlich. Dies hängt davon ab, wie die Datensätze gespeichert werden, und wiederholte Abfragen geben wahrscheinlich jedes Mal das gleiche Ergebnis zurück, zumindest solange Sie die Tabelle oder deren Inhalt nicht ändern. Ich meine, du kannst dir nicht sicher sein.

3

Aus dem Handbuch:

Mit einem Argument gibt der Wert die Anzahl der Zeilen von Anfang des Ergebnisses

So mit LIMIT 1 Sie die erste Zeile aus der get gesetzt zurückzukehren Ergebnismenge. Wie das Ergebnis eingestellt wird, hängt davon ab, welche Engine verwendet wird und welche Indizes Sie haben. Wenn Sie die erste Zeile hinzufügen möchten, müssen Sie eine weitere Spalte erstellen, um diese zu definieren.

Verwandte Themen