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)ため、実際の順序付けは行われず、データは挿入された順序で単純に表示されます。

于 2013-11-04T13:25:05.863 に答える
2

ここで起こっていること5 and 2は、1 に評価される式として見られることです。しかし、最初の列でソートされた結果を与えるべきではありません。

実際には、ソートされた順序で挿入したため、ソートされたデータしか得られないと思います。この SQLFiddle を見てください。

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

データは でソートされていません。any of the columnsでソートされてい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 に答える