【问题标题】:How to find if data is missing from a table using LEFT JOIN [duplicate]如何使用 LEFT JOIN 查找表中是否缺少数据 [重复]
【发布时间】:2018-12-31 22:55:06
【问题描述】:

我需要连接两个表以确定特定表中是否缺少 VIN。

我正在使用 LEFT JOIN。不幸的是,我只能提取两个表中的数据。

SELECT vin 
FROM   table1.vins 
       LEFT JOIN table2.tbl2_vins 
              ON table2.tbl2_vins.vin = table1.vins.vin 
WHERE  table2.tbl2_vins = ( "5yfbprhe2jp757613" ); 

我试图弄清楚如何检查 table2 vin 列中的特定 VIN,但 table1 vin 列中没有。我认为我搞砸了'=',但无法确定执行此查询的最佳方法。

【问题讨论】:

  • 请提供样本数据和期望的结果。您要做什么尚不清楚。如果您想知道第二个表,为什么不直接查询呢?
  • 在 where 子句“WHERE table2.tbl2_vins”中,您没有指定列。
  • table1table2 是表名还是数据库名?

标签: mysql sql


【解决方案1】:
SELECT vin 
FROM   table2.vins 
       LEFT JOIN table1.tbl1_vins 
              ON table2.tbl2_vins.vin = table1.vins.vin 
WHERE  table1.tbl1_vins = is null; 

其他方式是使用“减号”和“不在(选择...)”。

【讨论】:

    【解决方案2】:

    通常,此类问题的答案是将条件移至on 子句。

    但是,您的所有列似乎都相同。这可能会做你想做的事:

    SELECT t1.vin, (t2.vin is not null) as present_in_t2
    FROM table1.vins t1 LEFT JOIN
         table2.tbl2_vins t2
         ON t2.vin = t1.vin
    WHERE t1.vin IN ( '5yfbprhe2jp757613' ); 
    

    我试图弄清楚如何检查 table2 vin 列中的特定 VIN,但 table1 vin 列中没有。

    如果这是你想要的,那么就使用not exists:

    SELECT t2.vin
    FROM table2.tbl2_vins t2
    WHERE NOT EXISTS (SELECT 1
                      FROM table1.vins t1 
                      WHERE t2.vin = t1.vin
                     ) AND
          t2.vin IN ( '5yfbprhe2jp757613' ); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 2011-02-18
      • 1970-01-01
      相关资源
      最近更新 更多