order by節の後にサブセレクトクエリーでデータセットを動的に並べ替える必要があります。私はこのことに慣れ親しむために、小さなテストセットを作り、どちらもうまくいきませんでした。サブセレクションによるMySQLのオーダー
結果を直接表示するには、存在しない列で並べ替えてエラーを生成しようとします。これは私のクエリとその結果です:
select * from entries order by 2 desc, (select case when (1=1) then 4 else 5 end);
select * from entries order by 2 desc, (select if(1=1,4,5));
+----+------+---------+------+
| id | name | content | time |
+----+------+---------+------+
| 19 | ccc | ccc | 300 |
| 18 | bbb | bbb | 200 |
| 17 | aaa | aaa | 100 |
| 20 | aaa | aaa | 400 |
| 21 | aaa | aaa | 50 |
+----+------+---------+------+
1 = 1から1 = 2に切り替えることは決して結果を変更しません。私は1 = 2のエラーを期待しましたが、何も起こりませんでした。この形式の場合でも、両方のクエリは4列目とする必要があります。
私はそれは次のようになりますので、データセットは前後列によって順序付けられていることを期待:
+----+------+---------+------+
| id | name | content | time |
+----+------+---------+------+
| 19 | ccc | ccc | 300 |
| 18 | bbb | bbb | 200 |
| 21 | aaa | aaa | 50 |
| 17 | aaa | aaa | 100 |
| 20 | aaa | aaa | 400 |
+----+------+---------+------+
期待される出力は何ですか? –
5番目の列でソートしたいが、4つしかない。あなたが念頭に置いている第5列は何ですか? –
あなたの例はあまり役に立たない。それは単純に '2 desc、4'または' order by id desc、time'です。 –