我是 SQL 新手,正在使用 Microsoft SQL Server Management Studio。
我正在尝试编写一个 SQL 语句,在连接两个表后执行更新。
我有两张桌子:myTable1
and myTable2
。两者共享一个领域MyID
,这将是我加入的领域。myTable1
包含一个名为BitToUpdate
。 MyTable2 包含一个名为BitToCheck
.
我想设置BitToUpdate
in myTable1
为 1 其中BitToCheck
in myTable2
也是1。
这是我所拥有的:
SELECT M.MyID, BitToUpdate, BitToCheck
INTO #temp_table
FROM myTable1 as T1
LEFT JOIN myTable2 as T2
ON M.MyId = PO.MyId
所以首先我尝试连接两个表myTable1
and myTable2
其 ID,并将结果存储在临时表中。
接下来我要更新BitToUpdate
为 1 其中BitToCheck
is 1.
因此,要在临时表中执行此操作,我有:
UPDATE #temp_table
SET
`BitToUpdate` = 1
WHERE
`BitToCheck` = 1
这更新了BitToUpdate
在#temp_table 中成功。但是,当我选择myTable1
, 我发现BitToUpdate
没有改变。我认为这是有道理的,因为 #temp_table 并不是真正的“指针”......
但是处理此连接和更新的正确方法是什么?
你不需要使用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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)