mysql从一张表查询出一个字段的数据不在另一张表的另一个字段里方法

先说一个前提哈,前提是关联字段,有一个表里有所有的数据。另一个表里只有其中的某些数据。工作中遇见一个问题,两张数据量大约在几千万数据量吧,并且两张表的结构还不一样,但是其中有一个字段可以关联,通常我们会采取not in的方式来查询,比如 select a.uid from a where a.uid not in (select b.id from b)。但数据量大就等着吧,好慢好慢,,,

终于不想等了,分析了一下问题,看新sql:

SELECT * FROM (
(SELECT uid FROM a)
UNION ALL
(SELECT id as uid FROM b)
) t
GROUP BY t.uid
HAVING COUNT(t.uid )=1

当=1时,查询出来的就是差集,当>1时,肯定是两个表都有的也就是并集

猜你喜欢

转载自blog.csdn.net/Chen_leilei/article/details/89533793