Mysql SQL查询,反之亦然
我有类似的表结构,如下所示 现在,我想写一个查询(不使用内部查询),并找到所有具有以下条件的数字 (值1=A和值2=B)和(值1=B和值2=A) 表示数字同时具有值1和值2的a和B的情况,反之亦然Mysql SQL查询,反之亦然,mysql,sql,join,Mysql,Sql,Join,我有类似的表结构,如下所示 现在,我想写一个查询(不使用内部查询),并找到所有具有以下条件的数字 (值1=A和值2=B)和(值1=B和值2=A) 表示数字同时具有值1和值2的a和B的情况,反之亦然 因此,对于给定的情况,我的查询输出将是1和4。如果您不想重复重复的行,以下操作应该可以: SELECT NUMBER FROM MYTABLE WHERE value1 = 'A' and value2 = 'B' INTERSECT SELECT NUMBER FROM MYTABLE WHERE
因此,对于给定的情况,我的查询输出将是1和4。如果您不想重复重复的行,以下操作应该可以:
SELECT NUMBER FROM MYTABLE WHERE value1 = 'A' and value2 = 'B'
INTERSECT
SELECT NUMBER FROM MYTABLE WHERE value2 = 'A' and value1 = 'B';
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)
如果不想重复重复的行,则以下操作应该可以:
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)
请尝试此查询:
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'
您可以检查结果:请尝试此查询:
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'
您可以检查结果:您的主键是什么?您的主键是什么?为什么您认为只返回1和4才是正确的结果?@Arnab引用问题:“因此对于给定的情况,我的查询输出将是1和4。”嗯。。。但是MySQL似乎没有
INTERSECT
语法。。。请看问题的“加入”标签;-)为什么你认为只返回1和4才是正确的结果?@Arnab引用了这个问题:“因此对于给定的情况,我的查询输出将是1和4。”嗯。。。但是MySQL似乎没有INTERSECT
语法。。。请看问题的“加入”标签;-)