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

标签 mysql

我有下表:项目

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

我想更新表中的行,以便如果至少有一行的类型不为 NULL,并且其他行在其他属性、颜色和纹理上也匹配,它将将该值添加到另一行行。因此,在此示例中,它只会将“type”添加到行 id:3

最佳答案

您可以使用多表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        

关于mysql - 根据同一表中的其他行更新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8882974/

相关文章:

MYSQL 使用 2 列限定的其他表的值更新一个表

mysql - 使用不同列进行 SQL 分组

MYSQL更新随机选择X记录

mysql - php mysql 调用返回未知域名

mysql - 获取sql后检索DataRow

mysql - iReport 中的 SQL Join 语句

php - 外键约束使 SELECT 查询返回 0 行

MySQL查询将数据分组到不同的范围

mysql - 性能调优--Mysql

mysql - 如何根据多行字段选择数据