如何获取存在于一个MySql表而不是另一个MySql表中的记录
我需要编写一个查询,返回一个MySql表中存在而另一个表中不存在的记录。在本例中,我希望WAVER_log表中存在的所有晶圆都不存在于bt_log表中 以下是我正在使用的当前查询:如何获取存在于一个MySql表而不是另一个MySql表中的记录,mysql,sql,database,join,outer-join,Mysql,Sql,Database,Join,Outer Join,我需要编写一个查询,返回一个MySql表中存在而另一个表中不存在的记录。在本例中,我希望WAVER_log表中存在的所有晶圆都不存在于bt_log表中 以下是我正在使用的当前查询: SELECT wafer_log.wafer, bt_log.id AS blid, wafer_log.id AS wlid FROM bt_log RIGHT OUTER JOIN wafer_log ON bt_log.waferid = wafer_log.wafer WHE
SELECT wafer_log.wafer, bt_log.id AS blid, wafer_log.id AS wlid
FROM bt_log RIGHT OUTER JOIN wafer_log
ON bt_log.waferid = wafer_log.wafer
WHERE wafer_log.wafer IS NOT NULL AND bt_log.id IS NULL;
我的想法是从我关心的表中获取晶圆名称以及两个表的ID,并对晶圆名称进行外部联接。从那里,我想看到所有的结果,其中Wave_日志表中的Wave name不为null,bt_日志中的id为null
不过我觉得结果不太对劲
任何帮助都将不胜感激。您不需要加入即可完成此操作,假设“id”是您的主键,您可以使用子查询:
SELECT wafer_log.wafer, wafer_log.id AS wlid
FROM wafer_log
WHERE wafer_log.id NOT IN (SELECT id FROM bt_log);
这需要将bt_日志的所有行查询到内存中的临时表中。不好!这类似于标记为重复但不完全相同的问题。对于所选答案,是的,它可以工作,但是SELECT中没有的子查询会以指数方式降级。更好的响应是:从bt_log LEFT JOIN wafer_log ON bt_log.waferid=wafer_log.wafer,其中wafer_log.wafer为空,选择wafer_log.wafer,wafer_log.id作为wlid;迭代bt_日志并显示未找到的任何晶圆日志。最佳结果假设wafer_log.wafer和bt_log.waferid已索引。