2015-03-06 2 views
0

Я пытаюсь получить некоторый результат SQL из списка идентификаторов. У меня мои идентификаторы упорядочены так, как они мне нужны, но когда я вытягиваю результат из запроса, идентификаторы не упорядочены по мере необходимости.Порядок строк при использовании IN на Microsoft SQL Server

enter image description here

Мне нужна idParada заказал так же, как я послал их на IN. Я слышал, что у FIELD есть заказ на mysql, но он не работает для SQL Server.

+1

порядка элементов на 'в' совершенно не имеет значения к порядку вашего набора результатов. У вас должна быть таблица с порядком, который вы хотите в другом столбце – Lamak

+0

Порядок заказа IN не означает ничего в порядке набора результатов. Если вам нужен этот конкретный заказ, это можно сделать в предложении ORDER BY. (С большим количеством ввода.) – jarlh

+0

Было бы интересно узнать, почему этот конкретный заказ важен! – jarlh

ответ

2

Если у вас есть SQL Server 2012+, используйте choose():

select * 
from Paradas 
where iparada in (21, 22, . . .) 
order by choose(iparada, 21, 22, . . .); 
+0

Большое спасибо. Оно работало завораживающе – GalloPinto

0

Используйте случай, чтобы получить конкретный заказ:

select * from Paradas 
where iparada in (21,22 ...) 
order by case iparada when 21 then 1 
         when 22 then 2 
         ... 
        end 
Смежные вопросы