6

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

select * from MyTable order by 5 and 2;

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

4

4 回答 4

6

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

于 2013-11-04T13:25:05.863 回答
2

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

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

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

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

于 2013-11-04T13:28:00.410 回答
1

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

于 2013-11-04T13:18:04.063 回答
0
select * from MyTable order by 5,2; 
It means start with index 5 and bring 2record i.e 5,6,7
于 2013-11-04T13:20:53.257 回答