SQL查询反之亦然

时间:2014-05-15 11:16:09

标签: mysql sql join

我有类似的表结构,如下所示

enter image description here

现在我想写一个查询不使用内部查询)并查找所有那些有条件的人 (值1 = A且值2 = B)和(值1 = B且值2 = A)。

表示反之亦然的情况,其中一个数字同时具有值​​1和值2,具有A和B.

因此,对于给定的情况,我的查询输出将为1和4。

3 个答案:

答案 0 :(得分:2)

请尝试此查询:

select t1.NUMBER from mytable t1
join mytable t2 on t1.NUMBER = t2.NUMBER
where t1.Value1 = 'A' and t1.Value2 = 'B' and t2.Value1 = 'B' and t2.Value2 = 'A'

您可以查看结果:http://sqlfiddle.com/#!2/a5e7ae/1

答案 1 :(得分:1)

SELECT NUMBER FROM MYTABLE WHERE value1 = 'A' and value2 = 'B'
INTERSECT
SELECT NUMBER FROM MYTABLE WHERE value2 = 'A' and value1 = 'B';

答案 2 :(得分:1)

如果您不想重复重复的行,请执行以下操作:

mysql> select a.* from tbl_so_q23676640 a
    ->  join tbl_so_q23676640 b
    ->  on a.v1 = b.v2 and a.v2 = b.v1
    -> where a.n=b.n
    -> group by a.n, a.v1, a.v2
    -> ;
+------+------+------+
| n    | v1   | v2   |
+------+------+------+
|    1 | a    | b    |
|    1 | b    | a    |
|    4 | a    | b    |
|    4 | b    | a    |
+------+------+------+
4 rows in set (0.00 sec)
相关问题