PostgreSQL使用DISTINCT时出现near DISTINCT语法错误原因问询
PostgreSQL DISTINCT 语法报错原因
这一报错是由SQL标准以及PostgreSQL的语法规则限制导致的,核心原因如下:
- DISTINCT是SELECT子句的结果集修饰符,作用范围是当前查询返回的所有行记录,而非某一列的属性,语法层面要求它必须紧跟在SELECT关键字之后,不能放在列名的后面。
- 标准SELECT子句的语法结构为:
SELECT [DISTINCT] 列表达式1 [, 列表达式2 ...] FROM 表名 [其他子句],当你把DISTINCT放在列名之后时,PostgreSQL的语法解析器无法识别该位置出现的DISTINCT关键字,就会抛出你遇到的报错:
ERROR: syntax error at or near "DISTINCT"
- 直观写法对比参考:
- 错误写法(触发报错):
SELECT name, DISTINCT age FROM student; - 正确写法(单字段去重):
SELECT DISTINCT age FROM student; - 正确写法(多字段组合去重):
SELECT DISTINCT name, age FROM student;该写法会对name和age两个字段的组合值进行去重,只有两个字段值完全相同的行才会被判定为重复行剔除。
- 错误写法(触发报错):
内容的提问来源于stack exchange,提问作者aju_dev
相关产品推荐
相关产品推荐

