gpt4 book ai didi

mysql - 使用不同的行值通过一个查询更新多行

转载 作者:行者123 更新时间:2023-11-29 07:43:58 26 4
gpt4 key购买 nike

我不知道如何清楚地命名它。

使用shared_id加入表本身后,我得到以下数据。

a.id   | a.shared_id | a.key     | a.value         | b.id   | b.shared_id | b.key       | b.value
198131 | 6044 | unique-id | E15SJOEMGRMH013 | 198281 |6044 | _unique_id |

这是结果:

SELECT * FROM
(SELECT * FROM table1 WHERE key='unique-id') AS a
JOIN
(SELECT * FROM table1 WHERE key='_unique_id') AS b
ON a.shared_id = b.shared_id
WHERE a.value!='' AND a.value!=b.value AND a.key='unique-id'
;

我需要的是一个更新语句,它将 b.value 设置为 a.values 值。因此,在这个 1 行示例中,我希望 b.value 为 E15SJOEMGRMH013

现在记住 a.id 和 b.id 不同,因为键的名称略有不同,但它们应该具有相同的值。有数百行,因此我想在一个更新查询中执行此操作。

最佳答案

您不需要子查询,并且您对子查询的使用可能是您无法找出相应的 UPDATE 查询的原因。

UPDATE table1 AS a
JOIN table1 AS b ON a.shared_id = b.shared_id
SET b.value = a.value
WHERE a.key = 'unique-id' AND b.key = '_unique_id'
AND a.value != ''

SELECT 应该很简单:

SELECT *
FROM table1 AS a
JOIN table1 AS b ON a.shared_id = b.shared_id AND a.value != b.value
WHERE a.key = 'unique-id' AND b.key = '_unique_id'
AND a.value != ''

您不需要 UPDATE 中的 a.value != b.value 子句 - 如果它们相同,则 UPDATE 不执行任何操作。

关于mysql - 使用不同的行值通过一个查询更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28352257/

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