Pho*_*exo 120 sql sql-order-by
我希望我的查询返回表的行,其中列首先包含一个特定的值,然后返回按字母顺序排列的其余行.
如果我有一个像这个例子的表:
- Table: Users
- id - name - city
- 1 George Seattle
- 2 Sam Miami
- 3 John New York
- 4 Amy New York
- 5 Eric Chicago
- 6 Nick New York
Run Code Online (Sandbox Code Playgroud)
并且使用该表我希望我的查询首先返回包含New York的行,然后返回按城市按字母顺序排列的其余行.这可能只使用一个查询吗?
Rob*_*ley 188
在SQL Server,Oracle,DB2和许多其他数据库系统上,您可以使用以下内容:
ORDER BY CASE WHEN city = 'New York' THEN 1 ELSE 2 END, city
Run Code Online (Sandbox Code Playgroud)
cha*_*aos 102
如果您的SQL方言足够智能以将布尔表达式视为具有数值,那么您可以使用:
SELECT *
FROM `Users`
ORDER BY (`city` = 'New York') DESC, `city`
Run Code Online (Sandbox Code Playgroud)
我的答案可能是旧的并且不是必需的,但有人可能需要不同的方法,因此将其发布在这里。
我有同样的要求实现了这个,为我工作。
Select * from Users
ORDER BY
(CASE WHEN city = 'New York' THEN 0 ELSE 1 END), city
GO
Run Code Online (Sandbox Code Playgroud)
聚苯乙烯
这是针对SQL的
| 归档时间: |
|
| 查看次数: |
76557 次 |
| 最近记录: |