UPDATE A
SET A.cloum1 = A1.cloum1,
A.cloum2 = A1.cloum2,
FROM test_table1 A ,
test_table1 A1 ,
test_table2 R(NOLOCK)
WHERE A.cloum3 = A1.cloum3
AND A.cloum3 = R.cloum3
AND A.cloum4 = R.cloum4
我想知道这个sql都做了什么?我理解的是只是把原来的额值再次赋给这个字段,这种场景在什么情况下使用呢?
这个SQL语句实际上是通过同一张表进行自我关联,然后根据test_table2表的条件进行更新操作。具体来说,它首先将test_table1表自连接成两个别名为A和A1的表,然后在WHERE子句中通过A.cloum3 = A1.cloum3的条件将它们关联在一起。然后,根据test_table2表的条件,它会更新A表中的cloum1和cloum2列的值为A1表中的cloum1和cloum2列的值。
这种场景通常在需要把一个表的某些列的值更新成另一个表中相同列的值时使用。在该实例中,它是根据关联条件更新了test_table1表中的一些列的值。