use*_*072 1 sql sql-order-by sql-in
营销部门希望首先关注来自Noth America的客户.获取所有客户的ID,姓氏和国家/地区.通过首先培养居住在加拿大和美国的客户来建立清单,最后通过ID订购.提示:在ORDER BY子句中使用IN表达式.
我已经尝试过很多次了
SELECT CustomerID, LastName, Country
FROM Customer
ORDER BY Country IN ('Canada', 'USA'), CustomerID
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用,因为它按照它们出现在原始表中的顺序(也按ID排序)获取所有客户的指定字段,即使我CustomerID从该ORDER BY条款中删除,不关心他们在哪个国家/地区属于.
我该怎么办?我是SQL新手,并不知道如何解决这个问题.
编辑:WHERE根本不适合,因为我需要考虑所有客户,只确保加拿大和美国的客户出现在列表的顶部.另外我不确定之类的语句UNION,AS,EXCEPT并使用类似的东西,是为了,因为教程没去深了.
并非每个DBMS都具有布尔数据类型.所以结果
Country IN ('Canada', 'USA'), 
Run Code Online (Sandbox Code Playgroud)
这是一个布尔值,无法在这些DBMS中进行排序.
CASE但是,您可以使用表达式来指定值:
SELECT CustomerID, LastName, Country
FROM Customer
ORDER BY CASE WHEN Country IN ('Canada', 'USA') THEN 1 ELSE 2 END, CustomerID;
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1041 次  |  
        
|   最近记录:  |