gpt4 book ai didi

mysql - 根据值更新表而不重叠字段名称

转载 作者:行者123 更新时间:2023-11-29 06:42:33 25 4
gpt4 key购买 nike

我有两个表:

Table A with system values
------------------------
id | val_1 | val_2 |
------------------------
1 | 11 | 22 |
------------------------

Table B with user values
-----------------------
uid | set | val_3 |
-----------------------
21 | 1 | 11 |
-----------------------
68 | 2 | 22 |
-----------------------
83 | 1 | 11 |
-----------------------

我想用表 A 的 val_1val_2 的值更新表 B 中的 val_3,根据值设置在表B中。

因此,如果我更改:表 A val_1 => 333,表 A val_2 => 666,更新查询将表 B 更改为:


uid  |  set  |  val 3 |
-----------------------
21 | 1 | 333 |
-----------------------
68 | 2 | 666 |
-----------------------
83 | 1 | 333 |
-----------------------

这在一次查询中可能吗?现在我这样做:

$result=$mysql->query('SELECT val1,val2 from TABLE A WHERE id=1');
UPDATE TABLE B set val3=$result[0] WHERE set=1
UPDATE TABLE B set val3=$result[1] WHERE set=2

也许我可以做一个CASE WHEN,但如果没有表 A 的相应行值,我不知道该怎么做。

最佳答案

使用 JOIN 进行更新:-

UPDATE TableB
CROSS JOIN TableA
SET TableB.val_3 = CASE WHEN TableB.`set` = 1 THEN TableA.val_1 ELSE TableB.`set` = 2 THEN TableA.val_2 END
WHERE TableA.id=1
AND TableB.`set` IN (1,2)

关于mysql - 根据值更新表而不重叠字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20566191/

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