为什么,当我尝试按查询进行排序时,总是收到错误消息,告诉我通过 ORDER BY 'order' DESC 检查语法?
这是我的查询:
SELECT * FROM posts ORDER BY order DESC;
我究竟做错了什么?
为什么,当我尝试按查询进行排序时,总是收到错误消息,告诉我通过 ORDER BY 'order' DESC 检查语法?
这是我的查询:
SELECT * FROM posts ORDER BY order DESC;
我究竟做错了什么?
order
是 SQL 中的保留字;大小写无关紧要。用作标识符时必须加引号。来自MySQL 保留字文档:
某些单词,如 SELECT、DELETE 或 BIGINT [或 ORDER] 是保留的,需要特殊处理才能用作表名和列名等标识符。
传统的 MySQL 报价:
SELECT * FROM posts ORDER BY `order` DESC;
正确的 (ANSI) SQL 引号(一些数据库也支持[order]
):
SELECT * FROM posts ORDER BY "order" DESC;
尽管我会考虑重命名该列以避免将来出现此类令人困惑的问题。
订单是保留关键字。
尝试,
SELECT * FROM posts ORDER BY `order` DESC;
列名是order
关键字。你需要这样做:
SELECT * FROM posts ORDER BY `order` DESC;