2012-04-11 7 views
2

Warum versuche ich eine Bestellung durch Abfrage zu tun, ich mich immer einen Fehler zu sagen, die Syntax von der ORDER BY ‚bestellt‘ DESC zu überprüfen .... Hier meine Frage:Syntaxfehler in der Nähe von "ORDER BY Reihenfolge DESC" in MySQL?

SELECT * FROM posts ORDER BY order DESC; 

Was soll ich tun falsch??

+0

möglich Duplikat [Wie kann ich SQL für eine Tabelle schreiben, die den gleichen Namen wie ein geschütztes Stichwort in MySql teilt?] (Http://stackoverflow.com/questions/10706920/ how-can-i-write-sql-für-eine-Tabelle-die-teilt-das-gleiche-Name-wie-ein-Schutz-Schlüsselwort) – Jocelyn

Antwort

9

order ist ein reserviertes Wort in SQL; der Fall spielt keine Rolle. Es muss zitiert werden, wenn es als identifier verwendet wird. Von der MySQL Reserved Words Dokumentation:

Bestimmte Wörter wie SELECT, DELETE oder BIGINT [oder ORDER] sind reserviert und erfordern eine spezielle Behandlung für die Verwendung als Bezeichner wie Tabellen- und Spaltennamen.

Traditionelle MySQL zitiert:

SELECT * FROM posts ORDER BY `order` DESC; 

Proper (ANSI) SQL quotes (einige Datenbanken unterstützen [order] auch):

SELECT * FROM posts ORDER BY "order" DESC; 

Obwohl ich hielte die Spalte umbenennen so verwirrend Probleme in der Zukunft zu vermeiden.

Glückliche Codierung!

2

Bestellung ist Stichwort reserviert.

Versuchen ist

SELECT * FROM posts ORDER BY `order` DESC; 
2

Der Spaltenname order, die ein Schlüsselwort ist. Sie müssen dies tun:

SELECT * FROM posts ORDER BY `order` DESC;