【问题标题】:Calculating the delta over a single table计算单个表的增量
【发布时间】:2015-05-25 18:41:44
【问题描述】:

如何计算同一表中的两组数据之间的添加、删除和修改?这是一个例子:

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 的名字已更改为 Robert,Chris 已被删除,而 Dennis 已被添加。

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

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;

但我不确定如何进行修改。

有没有更好的办法?

谢谢

【问题讨论】:

    标签: sql database


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      我想通了!

      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;
      

      最后还不错。

      【讨论】:

        猜你喜欢
        • 2012-05-07
        • 2018-10-04
        • 2021-09-10
        • 2013-06-10
        • 1970-01-01
        • 2010-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多