0

IN条件に渡されたのと同じ順序で結果が欲しい:

SELECT * FROM `table_x` WHERE `id` IN (30, 12, 1001, 24);

取得:

ID | フィールド_a | フィールド_b
--------------------------
12 | ... | ...
24 | ... | ...
30 | ... | ...
1001 | ... | ...

期待:

ID | フィールド_a | フィールド_b
--------------------------
30 | ... | ...
12 | ... | ...
1001 | ... | ...
24 | ... | ...
4

2 に答える 2

2
SELECT * FROM `table_x` 
WHERE `id` IN (30, 12, 1001, 24) 
order by field(id, 30, 12, 1001, 24)
于 2013-10-31T10:49:00.353 に答える
1

FIELD 関数のリファレンス

SQLフィドル

SELECT * 
  FROM `table_x` 
  WHERE `id` IN (30, 12, 1001, 24) 
  ORDER BY FIELD(id, 30, 12, 1001, 24);

次のような出力が得られます

|   ID | FIELD_A | FIELD_B |
|------|---------|---------|
|   30 |     ... |     ... |
|   12 |     ... |     ... |
| 1001 |     ... |     ... |
|   24 |     ... |     ... |
于 2013-10-31T10:51:43.053 に答える