如何按条件排序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')
我有这个 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')