SQL сначала выбирает определенное значение - PullRequest
5 голосов
/ 18 апреля 2011
SELECT     AssetValue
FROM         Assets
WHERE     (AssetType = 'Country')

Очень простой оператор выбора, но он выводит

Afghanistan
Albania
Algeria
....

Как сделать так, чтобы США и Канада появлялись на вершине? Это возможно с SQL или мне нужно что-то сделать в моем коде ASP? Мой ПК - это INT-идентификация.

Ответы [ 3 ]

21 голосов
/ 18 апреля 2011
SELECT     AssetValue
FROM         Assets
WHERE     (AssetType = 'Country')
ORDER BY CASE AssetValue 
          WHEN 'US' THEN 1 
          WHEN 'Canada' THEN 2 ELSE 3 END, AssetValue 
4 голосов
/ 18 апреля 2011

Если вы не хотите использовать жесткий код, наиболее распространенным решением является наличие дополнительного поля для обозначения предпочтительных пунктов. Вы бы назвали это OrderPreference. Чем выше OrderPreference, тем первым появится элемент. Каждый элемент остальное будет иметь OrderPreference равным нулю. Запрос:

SELECT     AssetValue
FROM         Assets
WHERE     (AssetType = 'Country')
ORDER BY OrderPreference desc, AssetValue

Похоже, активы - это таблица, которую вы используете для других целей (не только для стран), поэтому вы можете использовать этот подход для решения той же проблемы для других типов активов, если они появятся.

1 голос
/ 18 апреля 2011

Дайте им идентификатор группы, так что группа 1 - это США, Великобритания и т. Д., Группа 2 - это остальной мир, тогда вы можете сделать «приоритетные» страны.

...