我不知道如何清楚标题。
使用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不一样,键被称为略有不同的东西,但它们应该保持相同的值。有几百行,所以我想在一个更新查询中执行此操作。
答案 0 :(得分:2)
您不需要子查询,而您对它们的使用可能就是您无法找出相应的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 != ''
您不需要a.value != b.value
中的UPDATE
条款 - 如果它们相同,则UPDATE
不会执行任何操作。