【问题标题】:MS SQL compare two table with exceptionsMS SQL比较两个表有异常
【发布时间】:2017-09-01 13:46:20
【问题描述】:

我有两张这样的桌子

昨天的餐桌

Column1 Column2  Column3     Column4 
John     5584    samsung     2017-08-31 23:43:06.867
Bob      4512    apple       2017-08-31 23:43:06.867
Hana     1881    nokia       2017-08-31 23:43:06.867
Hanz     4866    alcatel     2017-08-31 23:43:06.867
Nicol    48633   android     2017-08-31 23:43:06.867  ---gone

今天的餐桌

Column1 Column2     Column3     Column4 
John     5584       samsung     2017-09-01 23:43:06.867 ---same entry
Bob      4542446    apple       2017-09-01 23:43:06.867 ---change in column2
Hana     1881       halophone   2017-09-01 23:43:06.867 ---change in column3 
Hanz     4866       alcatel     2017-09-01 23:43:06.867 ---same entry
Mark     486654     alcatel     2017-09-01 23:43:06.867 ---new entry

我需要选择今天的更改并插入到 tableofchanges 中。只需选择这两行:

变化表

Bob      4542446    apple       2017-09-01 23:43:06.867
Hana     1881       halophone   2017-09-01 23:43:06.867

我创建了这个查询,但我不能包含 Column4。但是,如果我在没有 Column4 的情况下进行选择,我将不会在结果中看到 Column4:

select Column1, Column2,Column3 from [dbo].[tabletoday]
except
select Column1, Column2,Column3 from [dbo].[Tableyesterday]

【问题讨论】:

  • 不同日期的不同表?真的吗?!?
  • 可以声明还是临时表?
  • 那么只有Column1是两者之间的关键?
  • @jamiec column 4.. 没有修复 PK 的表
  • Column4 包含所有相同的值这一事实是否表明这可能是个问题!?

标签: sql sql-server database sql-server-2008


【解决方案1】:

尝试从第 4 列中提取值。

SELECT
    E.Column1
    ,E.Column2
    ,E.Column3
    ,T.Column4
FROM
(   
select Column1, Column2,Column3 from [dbo].[tabletoday]
except
select Column1, Column2,Column3 from [dbo].[Tableyesterday]
) AS E
    INNER JOIN [dbo].[tabletoday] AS T
        ON
        E.Column1 = T.Column1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 2023-03-17
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    相关资源
    最近更新 更多