如果我运行以下查询:
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时,不会出现错误消息吗?
答案 0 :(得分:4)
它不会忽略它,它通过字符串“abcdef”排序,而不是列。它完全符合你的要求:通过一些任意字符串排序(很可能根本不做任何事情)。
大多数RDBMS不接受按常量排序(它没有意义),但MySQL确实如此。
答案 1 :(得分:3)
当您不使用引号时,它会假定您引用的是列名,它不存在。
这是正确的功能
答案 2 :(得分:-1)
订单需要您想要订购的字段,如果您想要升序,则将asc放在旁边,如果您希望它下降,您可以按如下方式设置desc
SELECT *
FROM mysq.user
ORDER BY username ASC