代码之家  ›  专栏  ›  技术社区  ›  SamanthaAlexandria

标识两个表之间的新条目

  •  0
  • SamanthaAlexandria  · 技术社区  · 6 年前

    我想在表中标识最近(60天以来)的条目 T1 不在另一张桌子上的 T2 .

    因为MySQL不支持“FULL OUTER JOIN”,所以我尝试了下面的代码。

    T1级 我已经抹去了 T2级 . 当前代码未产生预期结果。

    SELECT * FROM (
    
      SELECT store, name, date
      FROM `T1` A
      LEFT JOIN `T2` V
        ON A.name=V.namebis AND A.store=V.storebis
    
      UNION ALL 
    
      SELECT store, name, date
      FROM `T1` A
      RIGHT JOIN `T2` V
        ON A.name=V.namebis AND A.store=V.storebis
      WHERE A.name is null
    
    ) C
    WHERE store IN (NYC, CHICAGO)
      AND (date BETWEEN CURRENT_DATE AND subdate(CURRENT_DATE, 60))
    GROUP BY store, name
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Nick SamSmith1986    6 年前

    如果您只想检查 T1 已经不在了 T2 ,你不需要 FULL JOIN ,您只需使用 LEFT JOIN T2级 NULL . 请注意 BETWEEN

    SELECT store, name, date
    FROM T1 
    LEFT JOIN T2 ON T1.name = T2.namebis AND T1.store = T2.storebis
    WHERE store IN (NYC, CHICAGO)
      AND (date BETWEEN subdate(CURRENT_DATE, 60) AND CURRENT_DATE)
      AND T2.namebis IS NULL
    
        2
  •  1
  •   jkdev james murphy    6 年前

    SELECT store, name, date
    FROM T1 
    LEFT JOIN T2 
    ON (T1.name = T2.namebis AND T1.store = T2.storebis)
    WHERE store IN (NYC, CHICAGO)
      AND TIMESTAMPDIFF(DAY, DATE(T1.`date`),CURDATE()) =60
      AND T2.namebis IS NULL