mysql - 差异获取值不在内部连接中

标签 mysql sql inner-join

我有表 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/

相关文章:

php - 获取用户名和密码进行身份验证

sql - 如何在 SQL SERVER 2005 中使用递归表值函数

MySQL选择未读消息

mysql - 使用 update 更新两个表中的任何一个

java - 如何添加过滤功能?

mysql - 从 mysql 数据库匹配一组给定的关键字

mysql - 我需要在我所做的查询上创建一个子句

MySQL:WHERE 子句中的 LIKE 通配符

php mysql 数据没有出现在表中

c# - 我可以尝试在 catch 中打开 MySQL 连接吗?