Mysql 基于同一表中的其他行更新行
我有下表:项目Mysql 基于同一表中的其他行更新行,mysql,Mysql,我有下表:项目 +----+------+-------+---------+ | id | type | color | texture | +----+------+-------+---------+ | 1 | card | red | rough | | 2 | | red | smooth | | 3 | | red | rough | | 4 | | green | rough | +----+------+-----
+----+------+-------+---------+
| id | type | color | texture |
+----+------+-------+---------+
| 1 | card | red | rough |
| 2 | | red | smooth |
| 3 | | red | rough |
| 4 | | green | rough |
+----+------+-------+---------+
我想更新表中的行,这样,如果至少有一行的类型为NOTNULL,并且其他行的其他属性、颜色和纹理也匹配,那么它将向其他行添加值。因此,在本例中,它只会将“type”添加到行id:3您可以使用多表更新语句来执行此操作:
好奇的是,如果存在多个不同类型的其他匹配行,会发生什么?
UPDATE items i1
JOIN items i2
ON i1.color = i2.color
AND i1.texture = i2.texture
AND i2.type IS NOT NULL
SET i1.type = i2.type
WHERE i1.type IS NULL