SQL根据文本值选择特定记录

时间:2013-10-11 18:53:29

标签: sql sql-server case union

我有一张国家表......

CountryID     CountryCode    CountryName
1              AF             Afghanistan
2              AX             ALAND ISLANDS
3              AL             Albania
4              DZ             Algeria etc.

我将使用它来填充网页上的下拉菜单。我想要的是能够让下面的四个国家首先出现,然后在ASC顺序中将整个列表显示在这四个国家之下。

CountryID    CountryCode     CountryName
236            US             United States
40             CA             Canada
76             FR             France
235            UK             United Kingdom

我尝试了各种方法,但尚未得到它。

SELECT *
From [dbo].[tblCountries]
WHERE CountryID IN (236,40,76,235)
ORDER BY CountryName asc

这给了我想要的4个国家,但不允许我在他们下面显示另一个国家。

1 个答案:

答案 0 :(得分:0)

您不需要UNION来获取结果,您可以在ORDER BY中使用CASE表达式:

select [CountryID], [CountryCode], [CountryName]
from tblCountries
order by
  case [CountryID]
    when 236 then 1
    when 40 then 2
    when 76 then 3
    when 235 then 4
    else 5
  end, [CountryName];

请参阅SQL Fiddle with Demo