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