我如何看待MySQL中两个表之间的差异?

我如何看待MySQL中两个表之间的差异?,mysql,sql,Mysql,Sql,我有两张桌子。表A和B。每个表都有一个barcode列 我可以在条形码字段中加入这两个。我想做的是找出表A中哪些条形码不与B连接 例如: A有: 001 002 003 001 002 003 B有: 001 003 001 003 我需要一个可以收回002的查询 我该怎么做呢?这被称为反连接,在MySQL中有三个选项。以某种模糊的偏好顺序(从大到小): 外部联接和为空: SELECT A.barcode FROM A LEFT JOIN B USING (barcode) WHERE B

我有两张桌子。表
A
B
。每个表都有一个
barcode

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

例如:

A有:

001 002 003 001 002 003 B有:

001 003 001 003 我需要一个可以收回002的查询


我该怎么做呢?

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

  • 外部联接
    为空

    SELECT A.barcode
    FROM   A LEFT JOIN B USING (barcode)
    WHERE  B.barcode IS NULL
    
  • 不在

    SELECT barcode
    FROM   A
    WHERE  barcode NOT IN (
             SELECT barcode
             FROM   B
           )
    
  • 不存在

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

  • 请参阅@Quassnoi的博客文章,以比较分析它们各自的性能。

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

  • 外部联接
    为空

    SELECT A.barcode
    FROM   A LEFT JOIN B USING (barcode)
    WHERE  B.barcode IS NULL
    
  • 不在

    SELECT barcode
    FROM   A
    WHERE  barcode NOT IN (
             SELECT barcode
             FROM   B
           )
    
  • 不存在

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

  • 请参阅@Quassnoi的博客文章,以比较分析它们各自的性能。

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

  • 外部联接
    为空

    SELECT A.barcode
    FROM   A LEFT JOIN B USING (barcode)
    WHERE  B.barcode IS NULL
    
  • 不在

    SELECT barcode
    FROM   A
    WHERE  barcode NOT IN (
             SELECT barcode
             FROM   B
           )
    
  • 不存在

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

  • 请参阅@Quassnoi的博客文章,以比较分析它们各自的性能。

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

  • 外部联接
    为空

    SELECT A.barcode
    FROM   A LEFT JOIN B USING (barcode)
    WHERE  B.barcode IS NULL
    
  • 不在

    SELECT barcode
    FROM   A
    WHERE  barcode NOT IN (
             SELECT barcode
             FROM   B
           )
    
  • 不存在

    SELECT barcode
    FROM   A
    WHERE  NOT EXISTS (
             SELECT *
             FROM   B
             WHERE  B.barcode = A.barcode
           )
    
  • 请参阅@Quassnoi的博客文章,以了解它们各自性能的比较分析