MySQL Order-By Bug

时间:2010-11-19 16:54:29

标签: mysql sql-order-by mysql-error-1054

如果我运行以下查询:

select * from mysql.user order by abcdef;

MySQL抛出以下错误:

  

ERROR 1054(42S22):未知列   'order clause'中的'abcdef'

如果我运行以下类似的查询:

select * from mysql.user order by "abcdef";

MySQL现在运行查询并忽略order by子句(因为mysql.user表缺少一个名为'abcdef'的列)。

这是MySQL中的错误吗?当短语在引号中时,为什么您希望订单以静默方式失败?在不存在的列上运行order by时,不会出现错误消息吗?

3 个答案:

答案 0 :(得分:4)

它不会忽略它,它通过字符串“abcdef”排序,而不是列。它完全符合你的要求:通过一些任意字符串排序(很可能根本不做任何事情)。

大多数RDBMS不接受按常量排序(它没有意义),但MySQL确实如此。

答案 1 :(得分:3)

当您不使用引号时,它会假定您引用的是列名,它不存在

这是正确的功能

答案 2 :(得分:-1)

订单需要您想要订购的字段,如果您想要升序,则将asc放在旁边,如果您希望它下降,您可以按如下方式设置desc

SELECT *
  FROM mysq.user
 ORDER BY username ASC
相关问题