2015-05-25 143 views
0

如何计算位于同一个表格中的两组数据之间的添加,删除和修改?这里有一个例子:在单个表格上计算增量

drop table if exists people; 
create table people (job int, id int, name varchar(255)); 

insert into people values (1, 1, "Amy"); 
insert into people values (1, 2, "Bob"); 
insert into people values (1, 3, "Chris"); 

insert into people values (2, 1, "Amy"); 
insert into people values (2, 2, "Robert"); 
insert into people values (2, 4, "Dennis"); 

在这个例子中,Bob的名字变成了罗伯特,克里斯已被删除,丹尼斯已添加。

到目前为止,我可以得到补充:

select p2.* from people p1 
right join people p2 
on p1.job = 1 
and p2.job = 2 
and p1.id = p2.id 
where p2.job = 2 
and p1.id is null; 

,我可以得到的缺失:

select p1.* from people p1 
left join people p2 
on p1.job = 1 
and p2.job = 2 
and p1.id = p2.id 
where p1.job = 1 
and p2.id is null; 

但我不知道怎么去修改。

有没有更好的方法?

谢谢

回答

0

我设法搞清楚了!

select * from people p1 
join people p2 
on p1.job = 1 
and p2.job = 2 
and p1.id = p2.id 
where p1.name != p2.name; 

最后并没有那么糟糕。

1

对于您的示例数据,这将返回改性

select * from people p1 
join people p2 
on p1.job = 1 
and p2.job = 2 
and p1.id = p2.id   -- same id 
WHERE p1.name <> p2.name -- but different name