代码之家  ›  专栏  ›  技术社区  ›  John Beasley

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

  •  0
  • John Beasley  · 技术社区  · 7 年前

    match_rail match_complete .

    匹配完成 表和不应再显示在中 桌子

    匹配轨道 表格每小时刷新一次。因此,我需要确保不显示相同的内容 bill_number 匹配完成

    以下是查询:

     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 回复  |  直到 7 年前
        1
  •  1
  •   Bart Friederichs    7 年前

    你想使用 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
    
        2
  •  1
  •   Michał Turczyn    7 年前

    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)