gpt4 book ai didi

sql - 如何根据另一个表中另一列的值更新列?

转载 作者:行者123 更新时间:2023-12-02 00:54:31 24 4
gpt4 key购买 nike

我有一个 table A ,有 2 个主要列:NameSettings .Settings列将有 3 个值:1、2 或 3。

例如:

Name     Settings
Andre 1
Andre 1
Betty 3
Charles 1
Charles 1

注意 1 Name只能有 1 Settings : 1, 2 或 3

我还有一个 table B ,有 2 个主要列:NameType .Type列包含 3 个值:'TypeA' , 'TypeB''TypeC' .

例如:

Name       Type
Andre TypeA
Andre TypeA
Andre TypeC
Betty TypeB
Betty TypeB
Charles TypeB
Charles TypeA
Charles TypeA

注意 1 Name可以有多个相同或不相同的Type .我们不考虑TypeC , 只是 TypeATypeB .

现在我想更新 Settings来自 table A 的专栏使用 'Type'来自 table B 的专栏,如果:

  • Type来自 table B 的专栏的值为 'TypeA' , 然后设置所有具有相同 Name 的记录两个表的 Settings 上的 1来自 table A 的专栏.
  • Type来自 table B 的专栏的值为 'TypeB' , 然后设置所有具有相同 Name 的记录两个表的 Settings 上的 2来自 table A 的专栏.
  • Type来自 table B 的专栏具有 'TypeA' 的两个值和 'TypeB' , 然后设置所有具有相同 Name 的记录两个表的 Settings 上的 3来自 table A 的专栏.

table A 的结果会变成这样:

Name     Settings
Andre 1
Andre 1
Andre 1
Betty 2
Charles 3
Charles 3

最佳答案

听起来您需要更新连接语句:

UPDATE a
SET settings = CASE type WHEN 'TypeA' THEN 1
WHEN 'TypeB' THEN 2
END
FROM tablsA a
JOIN tableB b ON a.name = b.name
WHERE type IN ('TypeA', 'TypeB') -- just a precaution

关于sql - 如何根据另一个表中另一列的值更新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55412381/

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