选择mysql中的所有记录,除非记录存在于另一个表中

kyxcudwk  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(383)

我有两张mysql表。一个叫做 match_rail 以及 match_complete .
当一个来自match\u rail的bill\u编号被操作时,记录移动到 match_complete 表和不应再显示在 match_rail table。
这个 match_rail 表每小时刷新一次。因此,我需要确保不显示相同的 bill_number 如果它已经存在于 match_complete table。
以下是查询:

SELECT
   mr.RAMP
   mr.ETA
   mr.BILL_NUMBER
   // few more columns
 FROM
   matchback_rail mr
 JOIN
   matchback_complete mc ON mr.BILL_NUMBER = mc.BILL_NUMBER

上面的查询提供了0条记录。它应该给我所有的记录,除了两个表中存在的记录。
不确定我是否应该使用 JOIN 或者 LEFT JOIN .

oiopk7p5

oiopk7p51#

尝试此查询:

SELECT
     mr.RAMP
     mr.ETA
     mr.BILL_NUMBER
     // few more columns
FROM
     matchback_rail mr
WHERE NOT EXISTS(SELECT 1 FROM matchback_complete
                 WHERE BILL_NUMBER = mr.BILL_NUMBER)
yruzcnhs

yruzcnhs2#

你想使用 LEFT JOIN ,这将提供中的所有记录 mr ,即使没有任何连接。然后使用 WHERE 把你不想要的过滤掉。

SELECT
   mr.RAMP
   mr.ETA
   mr.BILL_NUMBER
   // few more columns
 FROM
   matchback_rail mr
 LEFT JOIN
   matchback_complete mc ON mr.BILL_NUMBER = mc.BILL_NUMBER
 WHERE mc.BILL_NUMBER IS NULL

相关问题