说我有以下查询:
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_track”值重复。
任何人都可以给我一个关于如何做到这一点的指针吗?
非常感谢!
答案 0 :(得分:0)
如果您想要删除任何行,其中connected_tracks
每个表出现多次,您需要进行自我反连接:
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
答案 1 :(得分:0)
select min(id),
connected_tracks
from track_nodes
group by connected_tracks
having count(*) = 1;
SQLFiddle:http://sqlfiddle.com/#!15/3227e/1
可能比自我加入更快