我有一个只有 3 列的表。当我键入以下查询时
select * from MyTable order by 5 and 2;
我得到了表中的所有内容(结果等于select * from MyTable;
)。我最初期望的是我会得到某种错误。但是我没看懂,为什么呢?
我有一个只有 3 列的表。当我键入以下查询时
select * from MyTable order by 5 and 2;
我得到了表中的所有内容(结果等于select * from MyTable;
)。我最初期望的是我会得到某种错误。但是我没看懂,为什么呢?
order by 5 and 2
被解释为order by (5 and 2)
which 是一个常量表达式,因此没有进行真正的排序,数据只是按照插入的顺序显示。
这里发生的事情5 and 2
被视为一个被评估为 1 的表达式。但是,它不应该给出按第一列排序的结果。
实际上,我认为你只会得到排序的数据,因为你是按排序顺序插入的。看看这个 SQLFiddle:
http://sqlfiddle.com/#!2/3e04e/1
数据不是按 排序的any of the columns
,而是按 a 排序的value 1
。
5 和 2 是列索引,它们表示第 5 列和第 2 列。
select * from MyTable order by 5,2;
It means start with index 5 and bring 2record i.e 5,6,7