【问题标题】:How do I see the difference between two tables in MySQL?如何查看 MySQL 中两个表之间的区别?
【发布时间】:2013-10-30 10:40:26
【问题描述】:

我有两张桌子。表AB。每个表都有一个barcode 列。

我可以在条形码字段中加入这两个。我想要做的是找出表 A 中的哪些条形码不与 B 连接。

例如:

A 有:

001 002 003

B 有:

001 003

我需要一个可以拉回 002 的查询。

我该怎么做?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    这被称为反连接,在 MySQL 中有三个选项。以某种模糊的偏好顺序(从高到低):

    1. OUTER JOINIS NULL

      SELECT A.barcode
      FROM   A LEFT JOIN B USING (barcode)
      WHERE  B.barcode IS NULL
      
    2. NOT IN:

      SELECT barcode
      FROM   A
      WHERE  barcode NOT IN (
               SELECT barcode
               FROM   B
             )
      
    3. NOT EXISTS:

      SELECT barcode
      FROM   A
      WHERE  NOT EXISTS (
               SELECT *
               FROM   B
               WHERE  B.barcode = A.barcode
             )
      

    请参阅@Quassnoi 的博客文章NOT IN vs. NOT EXISTS vs. LEFT JOIN / IS NULL: MySQL,了解它们各自的性能对比分析。

    【讨论】:

      猜你喜欢
      • 2012-12-13
      • 2011-09-19
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 2014-06-02
      相关资源
      最近更新 更多