【问题标题】:How to update column in one table based on result of select from another table如何根据从另一个表中选择的结果更新一个表中的列
【发布时间】:2020-05-03 18:53:34
【问题描述】:

我需要有关为 SQL Server 2008 编写脚本的帮助。

我有 2 个表,CharacterMEMB_INFO,我想自动运行此代码,作为 SQL Server 代理作业:

SELECT MasterResetCount
FROM character
WHERE MasterResetCount = 3 OR = 5 OR 7

并在同一代码中添加类似“IF”的内容

只有当 MasterResetCount = 3 或 = 5 或 7 并且 MasterResetCount 中存在 3,5,7 时才会进行测试

更新:

update MEMB_INFO 
set AccountLevel = 1

我很想得到帮助

我真的不懂写查询。

谢谢!

【问题讨论】:

  • 您好 Aviad Levi,欢迎来到 Stack Overflow。你的解释比较不清楚。请提供两个表格中的示例数据和所需结果(均以表格文本形式)以帮助我们为您提供帮助。
  • 请注意:SQL Server 2008 和 2008 R2 目前不再提供扩展支持 - red-gate.com/simple-talk/sql/database-administration/… - 是时候升级了!

标签: sql sql-server sql-server-2008 scripting sql-scripts


【解决方案1】:

您可以在更新中使用 where 子句,仅当字符表中存在 MasterResetCount 值为 3、5 或 7 的任何记录时才执行更新。

update MEMB_INFO set AccountLevel = 1
where exists (select *
              from character
              where character.UserId = MEMB_INFO.UserId and
                    MasterResetCount in (3, 5, 7))

【讨论】:

  • 感谢评论存在 在这里没有真正帮助 因为它会影响所有 AccountLevel 并将其更改为 1(在这种情况下,它会影响所有用户)我希望 AccountLevel 仅在以下情况下更新为 1 SELECT 的条件是在字符表中执行 MasterResetCount 3, 5, 7 并将 AccountLevel 更新为 1 仅对同一用户 His MasterResetCount Equals TO 3 OR 5 OR 7
  • @AviadLevi 请注意,您没有说任何关于用户的信息,当您需要帮助时,您必须提供所有需要帮助的信息。我已经更新了答案,所以现在您可以看到如何将 MasterResetCount 的状态仅过滤给 MEMB_INFO 的用户。问候。
猜你喜欢
  • 1970-01-01
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
  • 2021-01-06
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 1970-01-01
相关资源
最近更新 更多