首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么快速找出表中变化部分的数据

2013-06-25 
如何快速找出表中变化部分的数据?大家好:现有一张表叫MyTable, 其中有三列ColA, ColB和ColC数据类似如下:C

如何快速找出表中变化部分的数据?
大家好:

现有一张表叫MyTable, 其中有三列ColA, ColB和ColC

数据类似如下:

ColAColBColC
-------------------------------------------------------
2013-3-18B01.70
2013-3-18B12.50

2013-3-18B23.60
2013-3-18B34.70(删除)
...

2013-5-1B01.70
2013-5-1B12.50

2013-5-1B23.65(修改)
2013-5-1B45.58(新增)
...

由于数据较多20W左右,要找出这张表中二个不同日期的有差异性的数据,
也就是要找出对于2013-5-1来说,新增或修改或删除了的数据, 没变化的过滤掉:

2013-3-18B34.70(删除)
2013-5-1B23.65(修改)
2013-5-1B45.58(新增)


=========================================

问题:

1. 如何快速地找出这样的数据?(怎样才效率更高!!!!)
2. 对同一张表MyTable进行left join 或 right join时,结果和inner join的都一样,为什么?

如:
select o.ColC as OldC, n.ColC as NewC
from MyTable o 
left join MyTable n on (n.ColB=o.ColB)
where o.ColA='2013-3-18' and n.ColA='2013-05-01'


先谢谢大家。

[解决办法]
你的这个设计不好,换个思路,做个触发器,把你要的数据存到另一个表里面去吧
[解决办法]
个人认为应该在每天0点生成一张临时表比较好! 只有一张表怎么比较啊!!
这样进行比对 通过左连接 查出修改和新增的表 通过右连接查出删除的表
[解决办法]
这种情况,你要给个统计时间才好统计,比如:一个月统计一次。这样才会有比较吗。才可以比较出表的变化。
Left join 与 Inner Join 的区别:http://zhidao.baidu.com/question/407984766.html
至于Left Join的时候,执行顺序是On先执行,Where后执行,但是On条件删除的行有可能会再次添加回来,Where条件删除的行永久的。

热点排行