繁体   English   中英

sql 除外 - 不包括一列

[英]sql except - one column not included

我有两个相同的表(一个是另一个的副本,但记录在不同时间插入)。 假设它们看起来像那样(但在我的示例中,有 40 列而不是 3 列):

表格1

a   b    time
--------------
1   5    13:00
2   6    13:01
3   7    13:02

表 2

a   b    time
---------------
1   5    15:00
2   6    15:01
3   7    15:02

我想用一个简单的 EXCEPT 来比较它们

SELECT * FROM Table 1
EXCEPT 
SELECT * FROM Table 2

我正在尝试使用 WHERE 子句,但它没有用。 如何在没有列时间的情况下执行 EXCEPT 语句? 因为对我来说,在时间列中我有不同的值是完全可以的。 我现在使用“不存在”来比较它们,但我更喜欢一些更简单的方法。

它是结构使用除了

    SELECT column1 [, column2 ]
    FROM table1 [, table2 ]
    [WHERE condition]

   EXCEPT

  SELECT column1 [, column2 ]
  FROM table1 [, table2 ]
  [WHERE condition]

所以:

      SELECT a,b FROM Table 1
      EXCEPT 
     SELECT a,b FROM Table 2

显而易见的解决方案是您需要列出所有列:

select a, b, c, . . .
from table1
except
select a, b, c, . . .
from table2;

您可以使用系统表生成列列表。 您没有指定您的数据库,但类似:

select column_name
from information_schema.columns
where table_name = 'table1' and column_name <> 'time'
order by ordinal_position;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM