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

时间:2018-12-03 13:57:13

标签: mysql join select

我有两个MySQL表。一个称为match_railmatch_complete

操作match_rail中的bill_number时,记录将移至match_complete表,并且不再显示在match_rail表中。

match_rail表每小时刷新一次。因此,如果在bill_number表中已经存在相同的match_complete,我需要确保不显示相同的文本。

以下是查询:

 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

2 个答案:

答案 0 :(得分:1)

您要使用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

答案 1 :(得分:1)

尝试此查询:

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)