从同一个表中更新MYSQL
我有一个表,其中包含一些出错的数据,需要修复。以下是一个例子:从同一个表中更新MYSQL,mysql,Mysql,我有一个表,其中包含一些出错的数据,需要修复。以下是一个例子: TABLE-A id, type, value 1, 10, 123456 2, 10, NULL 3, 10, NULL 4, 20, 123456 5, 20, 654321 6, 20, NULL 我需要一个MYSQL更新命令 如果“类型”相同,则更新“值”,使其相同,只要值为NULL且“值”唯一 updatetable-a SET value=(…) 因此,在上表中,只有ID2和3的值将更新为123456 id 6不会更新
TABLE-A
id, type, value
1, 10, 123456
2, 10, NULL
3, 10, NULL
4, 20, 123456
5, 20, 654321
6, 20, NULL
我需要一个MYSQL更新命令
如果“类型”相同,则更新“值”,使其相同,只要值为NULL且“值”唯一
updatetable-a SET value=(…)
因此,在上表中,只有ID2
和3
的值将更新为123456
id 6
不会更新,因为同一“类型”的“值”不是唯一的
正如Peufeu所指出的,需要使用DISTINCT
来捕获像这样的情况,我认为id=3行也必须更新:
TABLE-A
id | type | value
1 | 10 | 123456
2 | 10 | 123456
3 | 10 | NULL
4 | 20 | 123456
5 | 20 | 654321
6 | 20 | NULL
在上面的示例中,“id”6的值应该是多少,因为它可以更新为123456或654321?不应该更新,我必须手动更新这些值。我不建议您在单个查询中进行更新。单个查询可能很复杂。使用PHP或其他语言,您正在使用。我正在使用PHP,但无法理解它。count(value)这里是错的:我想你的意思是计数(不同的值)。@peufeu:是的,我想
count(不同的值)
更正确。它将捕获以下情况:对于一个类型,有两行或更多行具有完全相同的值,而所有其他行都为NULL。Thnx.对我的例子很好,谢谢。但是,如果表有7,30123456 8,30123456 9,30,则ID 9不更新
TABLE-A
id | type | value
1 | 10 | 123456
2 | 10 | 123456
3 | 10 | NULL
4 | 20 | 123456
5 | 20 | 654321
6 | 20 | NULL