【问题标题】:Simpler way to get a diff of 2 mySQL tables?获得 2 个 mySQL 表差异的更简单方法?
【发布时间】:2011-02-16 16:57:10
【问题描述】:

我有两个具有相同字段的表,35 个相同的字段。

我知道我可以通过使用找出其中一个中不存在哪些行

SELECT first.a, first.b, first.c FROM first LEFT JOIN second USING(a,b,c) 
WHERE second.a IS NULL

我想知道的是,考虑到表列和列顺序是相同的,是否有更简单的方法来编写这个?

【问题讨论】:

    标签: sql mysql


    【解决方案1】:

    另一种选择是:

    SELECT DISTINCT a, b, c FROM first 
    WHERE (a, b, c) NOT IN
    (SELECT a, b, c FROM second)
    

    这并不简单,但它可能正是您想要的。 另外,你的版本应该更高效。

    【讨论】:

    【解决方案2】:

    很遗憾,不是,不是在 MySQL 中。

    在大多数现代 DBMS 中,您可以使用 MINUS 运算符:

    SELECT col1, col2, col3
    FROM tablea
    MINUS
    SELECT col1, col2, col3
    FROM tableb
    

    但是 MySQL 还不支持 MINUS 操作符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多