【发布时间】:2017-01-11 12:32:09
【问题描述】:
我有一个这样的 SQL 表:
+------+------------+---------+---------+--------+
| id | x | y | z | status |
+------+------------+---------+---------+--------+
| 1 | bla | ja | 1 | 0 |
| 2 | blaa | jaa | 2 | 0 |
| 3 | bla | ja | 1 | 0 |
| 4 | blaaa | jaaa | 3 | 0 |
| 5 | blaa | jaa | 2 | 0 |
+------+------------+---------+---------+--------+
我只想更新重复行的状态列,而不是第一个。
使用该语句,我会更新每个重复的重复行的第一行:
UPDATE table INNER JOIN
(SELECT x, y, z FROM table GROUP BY x,y,z HAVING COUNT(id) > 1)
dup
ON table.x = dup.x && table.y = dup.y && table.z = dup.z
SET status = '1'
但这是不对的,因为表必须像这样处理 UPDATE 语句:
+------+------------+---------+---------+--------+
| id | x | y | z | status |
+------+------------+---------+---------+--------+
| 1 | bla | ja | 1 | 0 |
| 2 | blaa | jaa | 2 | 0 |
| 3 | bla | ja | 1 | 1 |
| 4 | blaaa | jaaa | 3 | 0 |
| 5 | blaa | jaa | 2 | 1 |
+------+------------+---------+---------+--------+
我希望你能帮助我。
非常感谢。
【问题讨论】:
-
请用您正在使用的数据库标记您的问题。
-
你的预期结果是什么?
标签: sql duplicates sql-update inner-join