我有一个类似的MySQL表:的MySQL:查询互斥的记录集
+----+----------+----------+
| id | first | last +
+----+----------+-----------
| 5 | Alan | Smith |
| 5 | Bob | Jones |
| 5 | Tom | Clark |
| 5 | Victor | Mars |
| 6 | Bob | Jones |
| 6 | Tom | Kelly |
| 6 | Victor | Mars |
+----+----------+----------+
我想找到可以返回不ID 5和ID 6之间匹配的所有记录的高效的查询。 ..这样的:
+----+----------+----------+
| id | first | last +
+----+----------+-----------
| 5 | Alan | Smith |
| 5 | Tom | Clark |
| 6 | Tom | Kelly |
+----+----------+----------+
目前,我使用的是返回2个不同的“不”集看起来像下面选择2个独立的查询。其中5是不是在6和6哪里不5.
select id,
first,
last
from mytable
where id = 5 # swap 5 and 6
and concat(first, last)
not in (select concat(first, last)
from mytable
where id = 6) # swap 5 and 6
group by id,
first,
last
有没有办法在一个单一的查询来获取两集,您可以提供使用该样本数据的例子吗?
有没有比我的查询更有效的方法?另外,请提供示例。谢谢
是的。是的。尝试! – Strawberry 2015-01-26 23:14:20