加入两个表后的SQL更新

Rhs*_*Rhs 11 sql-server

我是SQL新手,使用的是Microsoft SQL Server Management Studio.

我正在尝试编写一个SQL语句,在连接两个表后执行更新.

我有两张桌子:myTable1myTable2.两者共享一个字段MyID,这将是我加入的字段.myTable1包含一个名为的列BitToUpdate.MyTable2包含一个名为的列BitToCheck.

我想设置BitToUpdatemyTable1是1,其中BitToCheckmyTable21为好.

这是我有的:

SELECT M.MyID, BitToUpdate, BitToCheck
INTO #temp_table
FROM myTable1 as T1
LEFT JOIN myTable2 as T2
ON M.MyId = PO.MyId
Run Code Online (Sandbox Code Playgroud)

首先,我想加入这两个表myTable1,并myTable2在他们的ID,并把结果存储在一个临时表.

接下来,我想更新BitToUpdate为1,其中BitToCheck1.

所以要在临时表中这样做,我有:

UPDATE #temp_table
SET 
    `BitToUpdate` = 1
WHERE
    `BitToCheck` = 1
Run Code Online (Sandbox Code Playgroud)

这会BitToUpdate在#temp_table中成功更新.但是,当我选择时myTable1,我发现BitToUpdate没有改变.我认为这是有道理的,因为#temp_table并不是真正的"指针"....

但是,接近此更新和更新的正确方法是什么?

Lam*_*mak 25

你不需要在LEFT JOIN这里使用,因为你正在检查表2中的条件,所以INNER JOIN这里应该更好.

UPDATE T1
SET T1.BitToUpdate = 1
FROM myTable1 T1
INNER JOIN myTable2 T2
    ON T1.MyId = T2.MyId
WHERE T2.BitToCheck = 1
Run Code Online (Sandbox Code Playgroud)

  • 万一有人在意:上面的查询没有错。在MS SQL中,您可以执行UPDATE-> JOIN-> SET或UPDATE-> SET-> FROM-> JOIN ...甚至UPDATE-> SET-> FROM-> WHERE .. 。 (2认同)