【发布时间】:2019-11-21 23:53:37
【问题描述】:
在问题的帮助下,我学会了如何使用SELECT DISTINCT 和ORDER BY:
How to use DISTINCT and ORDER BY in same SELECT statement?
我从这个问题中学会了使用ORDER BY CASE:
How do I return rows with a specific value first?
但是我有一个很难写的查询:
我有一张表CUSTOMER 和一列NAME,我想获取所有不同 客户的姓名,我想先找到名称“Hamza”。
SELECT DISTINCT "CUSTOMER"."NAME",
Max("CUSTOMER"."NAME")
FROM "CUSTOMER"
WHERE
"CUSTOMER".id >= 2
GROUP BY "CUSTOMER"."NAME"
ORDER BY CASE WHEN ("CUSTOMER"."NAME" = 'HAMZA' ) THEN 1 ELSE 2 END
错误:
错误:对于 SELECT DISTINCT,ORDER BY 表达式必须出现在选择列表中
第 15 行:按大小写排序 WHEN ("CUSTOMER"."NAME" = 'HAMZA') THEN 1 EL...
_________________.^
SQL 状态:42P10
字符:372
编辑
解决方法:
SELECT "CUSTOMER"."NAME", -- distinct keyword removed here
Max("CUSTOMER"."NAME")
FROM "CUSTOMER"
WHERE
"CUSTOMER".id >= 2
GROUP BY "CUSTOMER"."NAME"
ORDER BY
CASE WHEN ("CUSTOMER"."NAME" = 'HAMZA' ) THEN 1 ELSE 2 END,
CASE WHEN ("CUSTOMER"."NAME" = 'GIORNO' ) THEN 1 ELSE 2 END
【问题讨论】:
标签: sql postgresql select distinct