-1

「In」句を使用するクエリがあります。ここで、結果セットを In 句と同じ順序にしたいと考えています。例えば ​​-

select Id,Name from mytable where id in (3,6,7,1)

結果セット:

|Id | Name |
------------
| 3 |  ABS |
| 6 |  NVK |
| 7 |  USD |
| 1 |  KSK |

一時テーブルを使用したくありません。1回のクエリで目標を達成することは可能ですか?

4

2 に答える 2

3

CTEも使用できます

with filterID as 
(
  3 ID, 1 as sequence
  union 
  6, 2
  union 
  7, 3
  union 
  1, 4
)

select mytable.* from mytable 
inner join filterID on filterID.ID = mytable.ID
order by filterID.sequence ;
于 2014-10-06T14:04:32.347 に答える
2

T-SQL では、big を使用してこれを行うことができますcase

select Id, Name
from mytable
where id in (3, 6, 7, 1)
order by (case id when 3 then 1 when 6 then 2 when 7 then 3 else 4 end);

またはcharindex()

order by charindex(',' + cast(id as varchar(255)) + ',',
                   ',3,6,7,1,')
于 2014-10-06T14:02:21.817 に答える