为什么这个MySQL查询是正确的?

Bri*_*ian 6 mysql

我有一个只有3列的表.当我键入以下查询时

select * from MyTable order by 5 and 2;
Run Code Online (Sandbox Code Playgroud)

我得到表中的所有东西(结果等于select * from MyTable;).我最初的期望是我会遇到某种错误.但是我没理解,为什么?

Mat*_*ari 6

order by 5 and 2被解释为order by (5 and 2)一个常量表达式,因此没有进行实际排序,数据只是按插入顺序显示.


Prz*_*lej 2

这里发生的情况是,它5 and 2被视为一个计算结果为 1 的表达式。但是,它不应该给出按第一列排序的结果。

实际上,我认为你只能得到排序的数据,因为你按排序的顺序插入了它。看看这个 SQLFiddle:

http://sqlfiddle.com/#!2/3e04e/1

数据不是按 排序any of the columns,而是按 a 排序value 1