询问:
SELECT DISTINCT ON (geom_line),gid
FROM edge_table;
我有一个包含重复项的边缘表,我想删除重复的边缘保留其中一个,但是语法本身是错误的吗?
询问:
SELECT DISTINCT ON (geom_line),gid
FROM edge_table;
我有一个包含重复项的边缘表,我想删除重复的边缘保留其中一个,但是语法本身是错误的吗?
逗号是问题。
如果要geom_line
包含在结果中,请使用
SELECT DISTINCT ON (geom_line) geom_line, gid FROM edge_table;
其他用途
SELECT DISTINCT ON (geom_line) gid FROM edge_table;
但是,如果您的目标只是删除重复项,我会说您应该使用
SELECT DISTINCT geom_line, gid FROM edge_table;
DISTINCT
保证整个结果集的唯一性,同时DISTINCT ON
保证括号中表达式的唯一性。如果有几行括号中的表达式相同,则选择其中一行。如果您有ORDER BY
子句,则将选择第一行。
DISTINCT a, b
是一样的DISTINCT ON (a, b) a, b
。