получить набор результатов на основе порядка условий условия where на сервере sql - PullRequest
2 голосов
/ 08 октября 2011

Рассмотрим следующую таблицу

ColID  Value
  A     100
  B     200
  C     300
  D     400
  E     500

Что такое запрос для получения значений для colID 'C', 'A', 'D' в том же порядке?

Ответы [ 4 ]

3 голосов
/ 08 октября 2011

Как насчет использования CASE ?

SELECT [Value]
FROM testTable
WHERE colID IN ('C','A','D')
ORDER BY (CASE colID WHEN 'C' THEN 1 WHEN 'A' THEN 2 WHEN 'D' THEN 3 END);
3 голосов
/ 08 октября 2011

Для этого конкретного заказа вы должны сделать что-то вроде:

SELECT * FROM MyTable WHERE ColID IN ('C', 'A', 'D') 
   ORDER BY 
      CASE ColID 
         WHEN 'C' THEN 0 
         WHEN 'A' THEN 1 
         ELSE 2 
      END
1 голос
/ 08 октября 2011
Select * from Tablex Where ColId in ('C', 'A', 'D') order by ColId  -- This will yield 'A', 'C', 'D' order

Если вам нужно, чтобы он возвращался в порядке «C», «A» и «D», вам нужен еще один столбец, например:

ColID Value  Ordinal
A        100    2
B        200    5
C        300    1
D        400    3
E        500    4

Затем выполните:

Select * from Tablex Where ColId in ('C', 'A', 'D') order by Ordinal
0 голосов
/ 08 октября 2011

Вы можете сделать что-то вроде этого:

select * from your table Where ColId in ('C', 'A', 'D')

Что касается этого конкретного порядка, вы не можете сортировать по ColId или Value. Заказ по не даст вам в этом порядке.

...