Mysql使用Order,Desc、Asc关键字作为字段名称

各类数据库都有自己定义的关键字,作为保留字,如果使用这些字段作为表名或者字段名的话,就可能会发生错误

问题

java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘order FROM district’ at line 1

Mqsql在查询的时候遇到以下问题:

这里是因为使用“order”作为“排序”字段名称,用来记录排序位置,然而Mysql规定 order作为关键字,用于排序,不能出现在where之前,所以会报错。

解决方案

order左右使用符号 `(键盘上数字1左侧的按键)进行包裹,就可以正常解析,进行查询。

  • 例如
SELECT
	`id`,	`name`,	`parent_id`,	`suffix`,	`order`,	`code` 
FROM
	`test`.`district`
  • 数据库工具生成
SELECT * FROM `district`