更新加入 table 的列
Updating the column that the table was joined on
我需要更新一个包含两个 table 的专栏,但我很难全神贯注。这适用于 SQL 服务器。下面的松散示例...
用户
ID | Name | GroupID |
---------------------
1 | Bob | 100 |
2 | Alex | 300 |
3 | Sara | 300 |
组
ID | Name |
----------------
100 | Produce |
200 | Cashier |
300 | Stocker |
GroupID 是群组 table 的外键,他们正在加入群组。我必须根据 Group 中的 Name 列更新 User 中的 GroupID 列。例如,我希望 Alex 和 Sara 从 'Stocker' 更改为 'Cashier'。我的解决方案如下,但它似乎不起作用。
UPDATE User
SET User.GroupID = G.ID
FROM User U
JOIN Group G ON U.GroupID = G.ID
WHERE User = 'Sara' OR User = 'Alex'
预期结果
用户
ID | Name | GroupID |
---------------------
1 | Bob | 100 |
2 | Alex | 200 |
3 | Sara | 200 |
您不需要并更新了 join ..
但您可以使用子查询从组
中获取预期的 ID
update user
set User.GroupID = (select id
from group where name = 'Cashier )
where User = 'Sara' OR User = 'Alex'
我需要更新一个包含两个 table 的专栏,但我很难全神贯注。这适用于 SQL 服务器。下面的松散示例...
用户
ID | Name | GroupID |
---------------------
1 | Bob | 100 |
2 | Alex | 300 |
3 | Sara | 300 |
组
ID | Name |
----------------
100 | Produce |
200 | Cashier |
300 | Stocker |
GroupID 是群组 table 的外键,他们正在加入群组。我必须根据 Group 中的 Name 列更新 User 中的 GroupID 列。例如,我希望 Alex 和 Sara 从 'Stocker' 更改为 'Cashier'。我的解决方案如下,但它似乎不起作用。
UPDATE User
SET User.GroupID = G.ID
FROM User U
JOIN Group G ON U.GroupID = G.ID
WHERE User = 'Sara' OR User = 'Alex'
预期结果
用户
ID | Name | GroupID |
---------------------
1 | Bob | 100 |
2 | Alex | 200 |
3 | Sara | 200 |
您不需要并更新了 join .. 但您可以使用子查询从组
中获取预期的 IDupdate user
set User.GroupID = (select id
from group where name = 'Cashier )
where User = 'Sara' OR User = 'Alex'