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

时间:2013-11-04 13:15:35

标签: mysql

我有一张只有3列的表格。当我输入以下查询

select * from MyTable order by 5 and 2;

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

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

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

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

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

数据未按any of the columns排序,按value 1排序。

答案 2 :(得分:1)

5和2是列索引,它们表示第5列和第2列。

答案 3 :(得分:0)

select * from MyTable order by 5,2; 
It means start with index 5 and bring 2record i.e 5,6,7