更新两个表

时间:2017-02-16 17:13:59

标签: sql sql-server sql-server-2012

使用SQL 2012

我有两个在M_id上一对一存在的表(两个表中都没有重复),但这些表不是相同的记录,但是定义了一些相同的字段但只是在不同的列中。

我需要进行值检查,如果tableA中的特定单元格中出现“1”,我需要将该字段更新为tableB中的“1”。

实施例

表A

M_id | L1 | L2 | L3 
100  | 0  | 1  | 0

表B

M_id | S1 | S2 | S3
100  | 0  | 0  | 0

这里的关系是L2 = S3,所以如果在L2中遇到“1”,我需要将S3更新为“1”。在更新之前,所有tableB值都将为“0”。

其他列需要以与L1 = S2相同的方式进行更新,并且L3 = S1等。

不太确定如何发生这种情况。

谢谢,

MP

1 个答案:

答案 0 :(得分:0)

如果我理解你的意思。

WITH cte (
    SELECT
        a.L2
        , b.S3
    FROM
        tableB b
        JOIN tableA a ON a.M_id = b.M_id
    WHERE
        b.L2 = 1
)
UPDATE cte
SET S3 = L2, S2 = L1, S1 = L3