mysql - LEFT JOIN 显示不在右表中的记录

标签 mysql sql left-join

我有两个表 ECRDTL_del 和 ECRDTL_edit,我只想显示 ECRDTL_del 中不在 ECRDTL_edit 中的记录。 我试过使用 MYSQL left join,但无法得到想要的结果。这是我当前的查询字符串:

SELECT a.*
FROM ECRDTL_del AS a
    LEFT JOIN ECRDTL_edit AS b ON b.Ecrno = a.Ecrno
WHERE b.Cylno <> a.Cylno

下面提到的这两个表的数据示例和预期结果:

ECRDTL_del:

Ecrno  Cylno
9090   8881
9090   8882
9090   8883
9090   8884

ECRDTL_edit:

Ecrno  Cylno
9090   8881
9090   8885
9090   8886
9090   8884

LEFT 连接后的预期结果:

Ecrno  Cylno
9090   8882
9090   8883

最佳答案

从你的问题:

"...I want to display only records from ECRDTL_del which are not in ECRDTL_edit."

你很接近,你只需要检查 b.Ecrno IS NULL

SELECT a.* 
FROM   ECRDTL_del AS a 
       LEFT JOIN ECRDTL_edit AS b 
          ON a.Ecrno = b.Ecrno AND 
             a.Cylno = b.Cylno
WHERE  b.Ecrno IS NULL

输出

╔═══════╦═══════╗
║ ECRNO ║ CYLNO ║
╠═══════╬═══════╣
║  9090 ║  8882 ║
║  9090 ║  8883 ║
╚═══════╩═══════╝

关于mysql - LEFT JOIN 显示不在右表中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15926348/

相关文章:

mysql - 在数据库中更新扩展名之前的文件名

MySQL 连接 3 个表未返回所有结果

php - Mysql 选择表 IF

mysql - 奇怪的 MySQL 触发器行为

mysql - (mySql)查询匹配/精确字符串/[通配符]/精确字符串/[通配符]等?

java - 从另一个位置运行executeBatch()

sql - 在存储过程中将数据类型 varchar 转换为 bigint 时出错

sql - 性能 createNamedNativeQuerie 与 createNativeQuery

mysql - 与 SUM 的 LEFT 连接不显示其他表中不存在的结果

MySQL group_concat 和计数