0

询问:

SELECT DISTINCT ON (geom_line),gid 
FROM edge_table;

我有一个包含重复项的边缘表,我想删除重复的边缘保留其中一个,但是语法本身是错误的吗?

4

1 回答 1

1

逗号是问题。

如果要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

于 2017-12-07T07:29:45.597 回答