php mysql:显示表2、3、4和5中没有的记录

n1bvdmb6  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(374)

我需要在表1中显示serialnumber不在表2、3、4和5中的记录。
我目前找到了一种显示表1中serialnumber不在表2中的记录的方法,如下所示:

$query = "SELECT * FROM table1 WHERE serialnumber NOT IN 
(
  SELECT serialnumber
  FROM table2
)";

我只需要将其他表添加到此查询中。我试着添加 AND 但它不起作用。请帮忙。

4nkexdtk

4nkexdtk1#

添加union all子句:

SELECT * FROM table1 WHERE serialnumber NOT IN 
(
    SELECT serialnumber FROM table2
    UNION ALL
    SELECT serialnumber FROM table3
    UNION ALL
    SELECT serialnumber FROM table4
...
)
hfwmuf9z

hfwmuf9z2#

代替子查询,您可以执行更高效的 Left Join . 我们可以简单地从 table1 其他的table( table1 留给他们所有人的table)。现在, serialnumber 其他表中不存在的值将具有 null 值post join。所以,我们可以简单地使用 Where serialnumber IS NULL 要筛选的条件:

SELECT t1.* FROM table1 AS t1
LEFT JOIN table2 AS t2 ON t2.serialnumber = t1.serialnumber 
LEFT JOIN table2 AS t3 ON t3.serialnumber = t1.serialnumber 
LEFT JOIN table2 AS t4 ON t4.serialnumber = t1.serialnumber 
LEFT JOIN table2 AS t5 ON t5.serialnumber = t1.serialnumber 
WHERE t2.serialnumber IS NULL AND 
      t3.serialnumber IS NULL AND 
      t4.serialnumber IS NULL AND 
      t5.serialnumber IS NULL

相关问题