Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แก้ไข Syntax Error ใกล้ ORDER BY order DESC ใน MySQL

ใช้ Backtick Escape คำสงวน order ใน ORDER BY

ORDER เป็นคำสงวน (Reserved Word) ใน MySQL หากใช้เป็นชื่อคอลัมน์ ต้องครอบด้วย Backtick (`) ทุกครั้งที่อ้างอิง

ไวยากรณ์ที่ถูกต้อง

SELECT * FROM your_table_name ORDER BY `order` DESC;

ตัวอย่างสร้างตาราง (คอลัมน์ชื่อ order)

CREATE TABLE DemoTable (`order` INT);
INSERT INTO DemoTable VALUES (89), (67), (90), (56);

ข้อมูลในตาราง

+-------+
| order |
+-------+
| 89    |
| 67    |
| 90    |
| 56    |
+-------+

คำสั่ง ORDER BY ใช้ Backtick

SELECT * FROM DemoTable ORDER BY `order` DESC;

ผลลัพธ์ เรียงจากมากไปน้อย

+-------+
| order |
+-------+
| 90    |
| 89    |
| 67    |
| 56    |
+-------+

คำอธิบาย: Backtick (`) บอก MySQL ว่า order นี้คือ Identifier (ชื่อคอลัมน์) ไม่ใช่ Keyword ORDER

แนวทางปฏิบัติที่ดี: ใช้ Backtick ครอบชื่อตารางและคอลัมน์ทุกครั้ง ในโค้ด Production เพื่อป้องกันปัญหาคำสงวนทั้งที่รู้และไม่รู้

คำสงวนอื่นๆ ที่พบบ่อยและควร Escape: SELECT, INSERT, UPDATE, DELETE, WHERE, GROUP, ORDER, BY, LIMIT, OFFSET, KEY, INDEX, PRIMARY, UNIQUE, FOREIGN, REFERENCES, CHECK, CONSTRAINT, TRIGGER, PROCEDURE, FUNCTION, VIEW, DATABASE, TABLE, COLUMN, DESC, ASC, LIKE, IN, BETWEEN, CASE, WHEN, THEN, ELSE, END, IF, NULL, TRUE, FALSE, AND, OR, NOT, IS, DISTINCT, EXISTS, ALL, ANY, SOME, LEFT, RIGHT, INNER, OUTER, JOIN, UNION, INTERVAL, TIMESTAMP, DATE, TIME, YEAR, MONTH, DAY, HOUR, MINUTE, SECOND