gpt4 book ai didi

MySQL 更新 - 使用从表 B 计算的值设置表 A 中的值

转载 作者:行者123 更新时间:2023-11-29 00:07:23 24 4
gpt4 key购买 nike

我有两个表:

      TABLE_A                        TABLE_B
================= =========================
ID | Value | Q TABLE_A_VALUE | Q | Name
====|========|=== ==============|===|======
2 | 999 | 1 999 | 1 | Cat
3 | 777 | 1 888 | 2 | Cat
777 | 1 | Dog
666 | 2 | Dog

我需要执行更新以更改 TABLE_A.Q = 2 WHERE ID = 2 并在同一语句中将 TABLE_A.VALUE 更改为相关的 TABLE_B.TABLE_A_VALUE 执行查找以将 TABLE_A_VALUE 转换为具有与原始值相同的 Name 但新的 Q

换句话说,如果我用 ID=2 更新 TABLE_A 中的行,我想:

  1. TABLE_B 中查找 TABLE_AValue (999)
  2. TABLE_B中找到对应的Name (Cat)
  3. 用新的Q(888)找到对应的TABLE_A_VALUE
  4. Update 语句中使用这个值

.

      TABLE_A                  TABLE_A        
================= =================
ID | Value | Q ID | Value | Q
====|========|=== => ====|========|===
2 | 999 | 1 2 | 888 | 2
3 | 777 | 1 3 | 777 | 1

这是我坚持的一点。我可以:

UPDATE TABLE_A SET Q=2 WHERE ID=2

但我不确定查找。

如有任何帮助,我们将不胜感激。

最佳答案

技巧是 TABLE_B 上的第二个 INNER JOIN 以查找具有更高 Q 的行

UPDATE TABLE_A x
INNER JOIN TABLE_B y ON x.Value=y.TABLE_A_VALUE
INNER JOIN TABLE_B z ON y.Name=z.Name AND z.Q>y.Q
SET x.Q=z.Q, x.Value=z.TABLE_A_VALUE
WHERE x.ID=2

关于MySQL 更新 - 使用从表 B 计算的值设置表 A 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26914309/

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