如何按条件排序SQL查询结果?

How to order SQL query result on condition?

我有这个 SQL 查询:

SELECT DISTINCT category FROM merchant ORDER BY category ASC

给出了这个输出:

accommodation
education
food
general
health
money
shopping
sport
transport

如何将包含 "general" 的行放在结果的开头(或结尾)?

ORDER BY 子句中使用 CASE 表达式:

SELECT category  
FROM (
  SELECT DISTINCT category 
  FROM merchant ) t
ORDER BY 
   CASE WHEN category = 'General' THEN 0 ELSE 1 END,
   category ASC 

CASE 保证具有 General 的行将首先排序。第二个参数按升序排列其余类别。

你可以试试这个:

SELECT category 
FROM  merchant 
WHERE category = 'general'
UNION
SELECT DISTINCT category 
FROM merchant
WHERE category NOT IN ('general')