SQL首先选择某些值

时间:2011-04-18 15:44:58

标签: sql sql-server sql-server-2005 select

SELECT     AssetValue
FROM         Assets
WHERE     (AssetType = 'Country')

非常简单的Select Statement,但输出

Afghanistan
Albania
Algeria
....

如何让美国和加拿大成为最重要的?这可能是SQL还是我需要在我的ASP代码中做一些事情?我的PK是INT身份。

3 个答案:

答案 0 :(得分:21)

SELECT     AssetValue
FROM         Assets
WHERE     (AssetType = 'Country')
ORDER BY CASE AssetValue 
          WHEN 'US' THEN 1 
          WHEN 'Canada' THEN 2 ELSE 3 END, AssetValue 

答案 1 :(得分:4)

如果您不希望硬编码,最通用的解决方案是使用额外的字段来指示优惠项目。你可以称之为OrderPreference。 OrderPreference越高,该项目首先出现。其他每个项目的OrderPreference都等于ZERO。查询:

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

从外观上看,资产是您用于其他事物(不仅是国家/地区)的表格,因此您可以使用此方法为其他资产类型解决相同的问题(如果它们出现)。

答案 2 :(得分:1)

给他们一个群组ID,因此群组1是美国,英国等,群组2是世界其他地方,那么你可以做“优先”国家。