【问题标题】:Updating the column that the table was joined on更新加入表的列
【发布时间】:2022-01-02 04:43:06
【问题描述】:

我需要更新一个连接了两个表的列,但我很难理解它。这是针对 SQL Server 的。下面的松散示例...

用户

ID | Name | GroupID |
---------------------
1  | Bob  |   100   |
2  | Alex |   300   |
3  | Sara |   300   |

ID   |   Name  | 
----------------
100  | Produce |
200  | Cashier |
300  | Stocker |

GroupID 是 Group 表的外键,它们正在被连接。我必须根据 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   |

【问题讨论】:

  • 你正在使用哪个数据库???
  • WHERE User = 'Sara' AND User = 'Alex' - 您如何设想这会返回任何行?用户不能同时是两个不同的值。
  • 您在组中的名称和用户中的名称之间没有关系.. 尝试更好地解释.. 还添加预期结果
  • 我真的不知道你在这里要做什么......“我希望 Alex 和 Sara 从 'Stocker' 变为 'Cashier'” -> 根据你的表没有意义。
  • @ScaisEdge SQL Server

标签: sql join sql-update


【解决方案1】:

您不需要并已更新加入 .. 但您可以使用子查询从组中获取预期的 id

update user 
set User.GroupID = (select id 
from group where name = 'Cashier )
where User = 'Sara' OR User = 'Alex'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多