我需要从包含2列(X,Y)的表中找到不同的对(x,y)。 列中重复的数字不应包含在结果集中。
表:
X Y
1 2
2 3
3 4
4 4
5 2
5 6
7 9
结果集:
X Y
2 3
7 9
5在X中重复,在Y中重复2,4,因此它们不会与相应的Y和X形成对。 在接受采访时我问了这个问题。无法找到解决方案。需要查询此内容。请帮忙!
答案 0 :(得分:4)
SELECT X, Y
FROM yourTable
WHERE X IN (SELECT X FROM yourTable GROUP BY X HAVING COUNT(*) = 1) AND
Y IN (SELECT Y FROM yourTable GROUP BY Y HAVING COUNT(*) = 1)
@strawberry似乎已经找到了使用连接执行此操作的方法,但突然出现的选项是简单地使用非相关子查询来查找出现的X
和Y
值每个列中只有一次。然后,只需使用WHERE
子句检查每个X
和Y
值是否属于这些集合。
答案 1 :(得分:1)
例如:
SELECT DISTINCT a.*
FROM my_table a
LEFT
JOIN my_table b
ON b.x = a.x
AND b.y <> a.y
LEFT
JOIN my_table c
ON c.y=a.y
AND c.x <> a.x
WHERE b.x IS NULL
AND c.x IS NULL;