从同一个表中更新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