区别对MySQL

时间:2017-01-22 10:33:55

标签: mysql

我需要从包含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形成对。 在接受采访时我问了这个问题。无法找到解决方案。需要查询此内容。请帮忙!

2 个答案:

答案 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似乎已经找到了使用连接执行此操作的方法,但突然出现的选项是简单地使用非相关子查询来查找出现的XY值每个列中只有一次。然后,只需使用WHERE子句检查每个XY值是否属于这些集合。

答案 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;