我希望我的查询首先返回表中某一列包含特定值的行,然后按字母顺序返回其余行。
如果我有一个类似以下示例的表:
- 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
使用该表,我希望我的查询首先返回包含纽约州的行,然后返回按城市字母顺序排列的其余行。只使用一个查询就可以做到这一点吗?
发布于 2009-08-09 01:57:34
在SQL Server、Oracle、DB2和许多其他数据库系统上,您可以使用:
ORDER BY CASE WHEN city = 'New York' THEN 1 ELSE 2 END, city
发布于 2009-08-08 23:41:34
如果您的SQL方言足够智能,可以将布尔表达式视为具有数值,那么您可以使用:
SELECT *
FROM `Users`
ORDER BY (`city` = 'New York') DESC, `city`
https://stackoverflow.com/questions/1250156
复制相似问题