在更新语句中更改状态时合并两条记录?

时间:2012-11-12 11:55:31

标签: sql sql-server stored-procedures

我有一个更新语句,它将从TableB更改tableA中的状态。此表中的数据如下:

Serial   PersonId    Date        Department    State      Begintime    Endtime
    1       1        2012-01-01      50          1        08:00        11:00
    2       1        2012-01-01      50          5        11:00        14:00

当我从tableB获得状态2时,我需要将两个记录的状态设置为:2但我希望每个状态只有一条记录。

结果应为:

Serial   PersonId    Date        Department    State     Begintime     Endtime
    1       1        2012-01-01      50          2       08:00         14:00

反之亦然也是可能的:
TableA包含:

Serial   PersonId    Date        Department    State     Begintime     Endtime
    1       1        2012-01-01      50          2       08:00         14:00

更新后我想:(这两条记录来自tableB)

Serial   PersonId    Date        Department    State      Begintime    Endtime
    1       1        2012-01-01      50          1        08:00        10:00
    2       1        2012-01-01      50          5        12:00        15:00

我也不知道是否需要使用更新声明进行更新 任何解决这个问题的想法?

我正在使用sql server 2005。

1 个答案:

答案 0 :(得分:0)

艾哈迈德,这对你有用吗?

INSERT INTO tableA a
SELECT * FROM tableB b
WHERE b.[State] NOT IN (
    SELECT [State] FROM tableA
)

我假设你想要在表之间复制新记录。