根据同一个表中的其他行更新行

时间:2012-01-16 16:24:36

标签: mysql

我有下表:项目

+----+------+-------+---------+
| id | type | color | texture |
+----+------+-------+---------+
| 1  | card | red   | rough   |
| 2  |      | red   | smooth  |
| 3  |      | red   | rough   |
| 4  |      | green | rough   |
+----+------+-------+---------+

我想更新表中的行,以便如果至少有一行的类型为非NULL而其他行也匹配其他属性,颜色和纹理,则会将值添加到另一行行。所以在这个例子中它只会添加' type'行id:3

1 个答案:

答案 0 :(得分:5)

您可以使用多表UPDATE语句来执行此操作:

http://dev.mysql.com/doc/refman/5.0/en/update.html

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