我在MySQL中有一个表,其中有一些错误的数据显示为0
col3
,而不是正确的值。
这些损坏行的col3
列的正确值显示在具有col1
,col2
和col4
值的其他行中col3
不是0
。 (col1
与所有行的值相同,只等于US
。)
因此,为了解决这个问题,我只需要将所有col3
行等同于0
,并将这些col3
设置为col3
的值col3
1}}不等于0
和col1 = 'US'
和col2
和col4
匹配的位置。
这样的事情:
UPDATE Table1 WHERE col1= 'US' AND col3 = '0' AND col2 = x AND col4 = y SET col3 = (SELECT col3 FROM Table1 WHERE col1= 'US' AND col2 = x AND col4 = y AND col3 != '0'
但是我如何在MySQL中实际做到这一点,因为我上面用x
和y
作为占位符来解释逻辑。
答案 0 :(得分:3)
在MySQL中,您可以使用JOIN
:
UPDATE Table1 t1 JOIN
(SELECT t1.*
FROM Table1 t1
WHERE col3 <> 0 AND col1 = 'US'
) tt1
ON tt1.col2 = t1.col2 AND tt1.col4 = t1.col4
SET t1.col3 = tt1.col3
WHERE t1.col3 = 0;
答案 1 :(得分:1)
进行自我加入更新:
UPDATE Table1 a
INNER JOIN Table1 b
ON a.col2 = b.col2 AND
a.col4 = b.col4 AND
b.col3 <> 0
SET a.col3 = b.col3
WHERE
a.col3 = 0 AND
a.col1 = 'US'