首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除操作符查询外,用于区分新行和已更改行

除操作符查询外,用于区分新行和已更改行
EN

Database Administration用户
提问于 2018-07-19 13:38:14
回答 1查看 786关注 0票数 0

我使用new操作符来比较两个表之间的数据(作为最终导入的一部分,我希望将“今天的数据”与“昨天的数据”进行比较,最后只导入新的和更改过的行)。

它(除了)似乎正是我所需要的,但是有人知道我可以如何扩展它,以便在结果数据子集中,我能够区分新行和更改行吗?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2018-07-19 14:49:26

您可以使用这个职位的技术。

代码语言:javascript
复制
--Demo setup
set nocount on
drop table if exists #T1
drop table if exists #T2
Create table #T1 (Id int, OtherData varchar(10))
Create table #T2 (Id int, OtherData varchar(10))

insert into #T1(Id,OtherData) values(1,'NewRow')
insert into #T1(Id,OtherData) values(2,'ChgRowB')

insert into #T2(Id,OtherData) values(2,'ChgRowA')

-----------------------------------------------
--The actual query
-----------------------------------------------

-- NEW
SELECT A.*, 'NEW'  AS 'CHANGE_TYPE'
FROM #T1  A
LEFT JOIN #T2  B ON B.ID = A.ID
WHERE B.ID IS NULL
UNION
-- MODIFIED
SELECT B.*, 'MODIFIED'  AS 'CHANGE_TYPE'
FROM (
        SELECT * FROM #T1 
        EXCEPT
        SELECT * FROM #T2
    ) S1
INNER JOIN #T2  B ON S1.ID = B.ID;
代码语言:javascript
复制
| Id | OtherData | CHANGE_TYPE |
|----|-----------|-------------|
| 1  | NewRow    | NEW         |
| 2  | ChgRowA   | MODIFIED    |
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/212657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档