2012-06-05 2 views
4

У меня есть таблица, какСортировать по выбранной записи в SQL

city | pincode 

abcd | 123456 
xyz | 326545 
asd | 625844 
city | 999999 

и я хочу результат отсортирован с выбранным pincode первым

Если я выбираю pincode это 625844, какой город является asd это должно быть шоу первый

Желаемый результат:

city | pincode 

    asd | 625844 <<-- this is selected pincode must be first 
    abcd | 123456 
    xyz | 326545 
    city | 999999 
+0

Я считаю, что у вас есть по крайней мере один правильный ответ ниже, поэтому культурная вещь, чтобы сделать как SOer, - это отметить один ответ как правильный ... Как только вы получите шанс :) –

ответ

3
select * from tbl 
order by (case when pincode = '625844' then 0 else 1 end), pincode 

или если выбранный пин-код в настоящее время передается в качестве параметра @pincode, это должно работать

select * from tbl 
order by (case when pincode = @pincode then 0 else 1 end), pincode 
+0

спасибо, что он отлично работает – Veer

0

Назначьте весы всем вашим почтовым индексам и назначьте минимальный вес самому почтовому индексу.

0

Вам понадобится следующий заказ высказывания:

order by (case when pincode in (<selected pin codes>) then -1 
       else pincode 
      end) 

Я предполагаю, пин-код является положительным числом, и выбора -1, так что приходит первым.

1
(select * from pincodes where pincode = ?) 
union all 
(select * from pincodes where pincode !=? order by pincode asc) 

Используемое значение pincode Значение в качестве параметра поиска в запросе.

+0

Это будет просто заказать все на 'pincode'. – Quassnoi

+0

@Quassnoi То, что ОП ожидает! Не так ли? См. Вывод 'output like' в проводке. –

+0

OP ожидает, что выбранный «pincode» выйдет первым. Ваш запрос эквивалентен простому «ORDER BY pincode». – Quassnoi

3
ORDER BY 
     (pincode = @mypincode) DESC, 
     pincode 
+0

Жаль, что у меня есть только одно преимущество ... –

Смежные вопросы