批量更新+ SQL +自联接

时间:2010-05-26 03:01:46

标签: sql tsql sql-server-2008

我想更新Table中的一列,并参考同一表中的其他列。

例如:如下图所示 - 我想用最小日期更新有效结束日期,以大于有效记录的有效开始日期为准。

如何在T-SQL中实现这一点。这可以用单个更新语句完成吗?

alt text http://img10.imageshack.us/img10/1448/updateenddate.jpg

感谢。

2 个答案:

答案 0 :(得分:1)

我怀疑你想要的是用case语句完成的,但是我不能给你代码,因为你的问题的以下部分没有意义:

  

使用最小日期更新有效结束时间,以大于有效记录的有效开始日期为准。

答案 1 :(得分:1)

如何使用subselect,如下所示:

UPDATE MyTable mt
SET mt.EFFECTIVE_END_DATETIME = (SELECT MIN(mt2.EFFECTIVE_START_DATETIME)
                                 FROM MyTable mt2
                                 WHERE mt2.EFFECTIVE_START_DATETIME > mt.EFFECTIVE_START_DATETIME);