我有表 A 和表 B。我知道表 B 有 7848 行(计数(*)),我想看看这 7848 行中有哪些存在于表 A 中。据我所知,INNER JOIN 返回出现在表 A 和 B。所以我在内部像这样加入它们:
SELECT *
FROM
TABLE1 AS A
INNER JOIN
TABLE2 AS B
ON A.field1 = B.field1
此查询返回 1902 行。现在,我想找出哪些行没有出现在表 B 中,所以我这样做:
SELECT * FROM TABLE_B WHERE FIELD1 NOT IN (field1*1902....);
不同的是,我认为我应该得到 5946 行的结果,因为我发现了 1902 行正数。奇怪的是,这个 NOT IN 语句返回 6175 行,如果我添加它们,我得到 8077,这比 count(*) 告诉我表 B 有的多。
我可能做错了什么?
提前致谢。
最佳答案
连接是一种乘法。如果表 A 中有多行具有相同的字段 1,则 B 中的行会被计算多次。
也许你想要
SELECT * FROM TABLE_B B
WHERE EXISTS (SELECT field1 from TABLE_A A WHERE A.field1 = B.field1);
关于mysql - 差异获取值不在内部连接中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16367944/