为什么我的 DISTINCT ON 表达式不起作用?
Why doesn't my DISTINCT ON expression work?
查询:
SELECT DISTINCT ON (geom_line),gid
FROM edge_table;
我有一条包含重复项的边 table,我想删除重复的边以保留其中一条,但语法本身是错误的?
逗号有问题。
如果您希望 geom_line
包含在结果中,请使用
SELECT DISTINCT ON (geom_line) geom_line, gid FROM edge_table;
否则使用
SELECT DISTINCT ON (geom_line) gid FROM edge_table;
但是如果你的objective只是为了删除重复项,我会说你应该使用
SELECT DISTINCT geom_line, gid FROM edge_table;
DISTINCT
保证整个结果集的唯一性,而 DISTINCT ON
保证括号中表达式的唯一性。如果有几行括号中的表达式相同,则选择其中一行。如果您有 ORDER BY
子句,将选择第一行。
DISTINCT a, b
等同于 DISTINCT ON (a, b) a, b
.
查询:
SELECT DISTINCT ON (geom_line),gid
FROM edge_table;
我有一条包含重复项的边 table,我想删除重复的边以保留其中一条,但语法本身是错误的?
逗号有问题。
如果您希望 geom_line
包含在结果中,请使用
SELECT DISTINCT ON (geom_line) geom_line, gid FROM edge_table;
否则使用
SELECT DISTINCT ON (geom_line) gid FROM edge_table;
但是如果你的objective只是为了删除重复项,我会说你应该使用
SELECT DISTINCT geom_line, gid FROM edge_table;
DISTINCT
保证整个结果集的唯一性,而 DISTINCT ON
保证括号中表达式的唯一性。如果有几行括号中的表达式相同,则选择其中一行。如果您有 ORDER BY
子句,将选择第一行。
DISTINCT a, b
等同于 DISTINCT ON (a, b) a, b
.