ich einen Fehler gemacht und trat:SQL mit LIMIT1 gibt alle Datensätze
SELECT * FROM table LIMIT1
statt
SELECT * FROM table LIMIT 1
(man beachte den Raum zwischen LIMIT
und 1
)
in der CLI von MySQL . Ich erwartete eine Art Parse-Fehler, aber ich war überrascht, weil die Abfrage alle Datensätze in der Tabelle zurückgab. Mein erster Gedanke war "dumm MySQL, ich wette, dass dies Fehler in PostgreSQL zurückgeben wird", aber PostgreSQL gab auch alle Datensätze zurück. Dann getestet mit SQLite - mit dem gleichen Ergebnis.
Nach etwas graben, erkannte ich, dass es egal ist, was ich nach der Tabelle eingeben. Solange es keine WHERE/ORDER/GROUP
Klauseln:
SELECT * FROM table SOMETHING -- works and returns all records in table
SELECT * FROM table WHERE true SOMETHING -- doesn't work - returns parse error
Ich denke, dass dies ein standardisiertes Verhalten ist, aber ich konnte keine Erklärung finden, warum das ist. Irgendwelche Ideen?
Sie eine beliebige Tabelle in einer Abfrage einen Aliasnamen geben. Auf diese Weise können Sie Self-Joins durchführen (dieselbe Tabelle mehrmals angeben). –
@ NikolaMarkovinović Spot auf.Das OP hat "Tabelle" als "LIMIT1" bezeichnet. Sie sollten als Antwort posten. –
Schlagen Sie das einzige Tag, das hierher gehört, ist 'sql' – Smandoli