我是SQL新手,使用的是Microsoft SQL Server Management Studio.
我正在尝试编写一个SQL语句,在连接两个表后执行更新.
我有两张桌子:myTable1和myTable2.两者共享一个字段MyID,这将是我加入的字段.myTable1包含一个名为的列BitToUpdate.MyTable2包含一个名为的列BitToCheck.
我想设置BitToUpdate的myTable1是1,其中BitToCheck在myTable21为好.
这是我有的:
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)