如何返回具有特定值的行?

我希望我的查询返回列中包含特定值的表的行,然后返回按字母顺序排列的其余行。

如果我有一个像这样的例子的表:

- 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 

并使用该表我希望我的查询返回包含纽约的行,然后按城市按字母顺序的其余行。 这可能只使用一个查询吗?

在SQL Server,Oracle,DB2和许多其他数据库系统上,您可以使用以下内容:

 ORDER BY CASE WHEN city = 'New York' THEN 1 ELSE 2 END, city 

如果您的SQL语言足够智能,可以将布尔expression式视为具有数值,那么您可以使用:

 SELECT * FROM `Users` ORDER BY (`city` = 'New York') DESC, `city` 
Interesting Posts