mysql - mysql中两个相同表的区别

标签 mysql sql join select inner-query

我有两个定义完全相同但行数不同的表。有五个字段是表的部分键(这是两个表的主键)。我想找到一个表中的行,但没有找到另一个表中的行。我尝试按如下方式使用存在,但没有成功。

select * from table1 where not exists (select * from table2)

这些表具有完全相同的创建语句,但行数不同。我不知道是否可以通过使用连接来找到差异。谢谢!

最佳答案

尝试 LEFT JOIN ... IS NULL 模式。

SELECT a.* 
  FROM table1 a
  LEFT JOIN tableb b 
        ON a.f1 = b.f1 
       AND a.f2 = b.f2
       AND a.f3 = b.f3
       AND a.f4 = b.f4
       AND a.f5 = b.f5
 WHERE b.f1 IS NULL

这是有效的,因为 LEFT JOIN 在 b 中找不到匹配的行时,会在其结果集中返回 a 中的数据,但对于 中的值返回 NULL b.

ON 条件看起来很复杂。但查询规划器知道字段已建立索引,因此它会做正确的事情。

关于mysql - mysql中两个相同表的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52449431/

相关文章:

php - 注册/登录表单 PHP MySQL

MySQL - 分组和计数

mysql - 通过两个表之间的连接从一张表中选择总体成绩

mysql - 连接三个不同的mysql查询表

php - 表单中的 Sql 表关系

MySql 将 'LIKE' 和 'IN' 一起使用

php - 转义对象中的所有数据

sql - NOW() 是一个稳定的函数吗?

SQL - 当我的搜索没有返回任何结果和搜索条件时返回一个默认值

C# 不喜欢 SQL JOINS