MySQL错误1064:SELECT语句中的SQL语法错误

Chi*_*wis 0 php mysql

我对一些先进的MySQL查询相对较新.我一直在尝试使用MySQL SELECT语句使用以下MySQL查询查询特定用户的订单表中的最新订单.

SELECT o1.* FROM order AS o1
WHERE o1.orderDateTime = 
( 
  SELECT MAX(o2.orderDateTime) FROM order AS o2
  WHERE o2.userId = '1'
) 
Run Code Online (Sandbox Code Playgroud)

但我一直在不断收到与MySQL语法相关的以下MySQL错误#1064.

#1064 - 您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在'订单AS o1 WHERE o1.orderDateTime =(SELECT MAX(o2.orderDateTime)FROM order AS''附近使用正确的语法)

我在INSERT语句中遇到了类似的错误,但是我设法使用MySQL 1064中指定的方法修复它:你的SQL语法出错了 我在当前案例中尽力修复查询但是我仍然没有成功.

如果有人可以帮我修复上面指定的SELECT子句的MySQL语法错误,我将不胜感激.如果有人能指出我发生这个问题的确切原因,那将是很好的.

Abh*_*rty 5

order是一个保留字,对于表名来说是一个糟糕的选择.您需要在查询中使用反引号进行转义

SELECT o1.* FROM `order` AS o1
WHERE o1.orderDateTime = (
    SELECT MAX(o2.orderDateTime) FROM `order` AS o2
    WHERE o2.userId = '1'
) 
Run Code Online (Sandbox Code Playgroud)

http://dev.mysql.com/doc/mysqld-version-reference/en/mysqld-version-reference-reservedwords-5-5.html