gpt4 book ai didi

sql-server - 连接两个表后的 SQL 更新

转载 作者:行者123 更新时间:2023-12-02 08:59:25 25 4
gpt4 key购买 nike

我是 SQL 新手,正在使用 Microsoft SQL Server Management Studio。

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

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

我想将 myTable1 中的 BitToUpdate 设置为 1,其中 myTable2 中的 BitToCheck 也为 1。

这是我所拥有的:

SELECT M.MyID, BitToUpdate, BitToCheck
INTO #temp_table
FROM myTable1 as T1
LEFT JOIN myTable2 as T2
ON M.MyId = PO.MyId

首先,我尝试根据 ID 联接两个表 myTable1myTable2,并将结果存储在临时表中。

接下来,我想将 BitToUpdate 更新为 1,其中 BitToCheck 为 1。

因此,要在临时表中执行此操作,我需要:

UPDATE #temp_table
SET
`BitToUpdate` = 1
WHERE
`BitToCheck` = 1

这会成功更新#temp_table 中的BitToUpdate。但是,当我对 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

关于sql-server - 连接两个表后的 SQL 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15481505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com