Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取存在于一个MySql表而不是另一个MySql表中的记录_Mysql_Sql_Database_Join_Outer Join - Fatal编程技术网

如何获取存在于一个MySql表而不是另一个MySql表中的记录

如何获取存在于一个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

我需要编写一个查询,返回一个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
    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已索引。