Sql 仅返回特定列(Postgres)中具有唯一值的行

Sql 仅返回特定列(Postgres)中具有唯一值的行,sql,postgresql,Sql,Postgresql,假设我有以下问题: SELECT id, connected_tracks FROM track_nodes; 返回以下行: 1 "1100 1100 1200" 2 "1100 1100 1300" 3 "1100 1100 1300" 4 "1100 1200 1400" 如何修改查询,以便只返回不重复的行 使用上述示例,我只希望返回以下行: 1 "1100 1100 1200" 4 "1100 1200 1400" 重要的一点是,我不想要任何重复的行 我正在使用Postgres 9.

假设我有以下问题:

SELECT id, connected_tracks FROM track_nodes;
返回以下行:

1 "1100 1100 1200"
2 "1100 1100 1300"
3 "1100 1100 1300"
4 "1100 1200 1400"
如何修改查询,以便只返回不重复的行

使用上述示例,我只希望返回以下行:

1 "1100 1100 1200"
4 "1100 1200 1400"
重要的一点是,我不想要任何重复的行

我正在使用Postgres 9.3

每当我寻找实现这一点的方法时,我都会发现很多关于使用DISTINCT的引用。但据我所知,这并不能给出我想要的答案——我想它也会给我一行,其中connected_轨迹值是重复的

谁能告诉我怎么做

非常感谢

如果要删除任何行,其中每个表中出现不止一次连接的\u轨迹,则需要执行自反联接:

   SELECT t.id, t.connected_tracks
     FROM track_nodes AS t
LEFT JOIN track_nodes AS j
       ON t.connected_tracks = j.connected_tracks
      AND t.id <> j.id
    WHERE j.id IS NULL
SQLFiddle:


可能比自联接快

Distinct是答案,但您的示例中根本没有任何重复的行。好吧,我想我是指列上的Distinct值,而不是行-我的错误。然后,您仍然希望返回1、2和4或1、3和4。不仅仅是1和4。不,我只想要1和4。我不希望任何行在多次出现的列connected_轨迹中具有值。抱歉,如果我解释得不太清楚:好吧,我现在明白了,那么像unique这样的词是误导性的。谢谢,只是这份工作。我也发现这很有效:选择id,从track_nodes连接的_tracks作为tn,其中选择COUNT*FROM track_nodes,其中connected_tracks=tn。connected_tracks<2可能没有上面的解决方案那么优雅。我认为,Posgres也无法正确优化这一点。还有一个不存在的变体,但Posgres足够聪明,可以将其转换为引擎盖下的反连接变体,这就是我忽略的原因。
select min(id),
       connected_tracks
from track_nodes
group by connected_tracks
having count(*) = 1;