更新所有结果?

Jac*_* M. 4 mysql sql-update

我正在尝试更新表以删除除组的第一个实例之外的所有实例.基本上,我有一张表格,上面有与保险单有关的车辆数据.每个政策应该只有一个power_unit.其他一切都应该是一个牵引单位.不幸的是,一个错误已经复制了动力装置,现在我需要清理它.数据库中有大约1万条记录,其中约4k条的功率单位增加了一倍.

我表中的重要部分(现在称之为test1)是:

+------------+---------+------+-----+---------+----------------+
| Field      | Type    | Null | Key | Default | Extra          |
+------------+---------+------+-----+---------+----------------+
| id         | int(10) | NO   | PRI | NULL    | auto_increment | 
| policy_id  | int(10) | NO   |     | NULL    |                | 
| power_unit | int(1)  | NO   |     | 0       |                | 
+------------+---------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)

还有一些样本数据:

+----+-----------+------------+
| id | policy_id | power_unit |
+----+-----------+------------+
|  1 |         1 |          1 | 
|  2 |         1 |          1 | 
|  3 |         1 |          1 | 
|  4 |         2 |          1 | 
|  5 |         2 |          1 | 
|  6 |         2 |          1 | 
|  7 |         4 |          1 | 
|  8 |         4 |          1 | 
|  9 |         4 |          1 | 
| 10 |         5 |          1 | 
| 11 |         5 |          1 | 
| 12 |         6 |          1 | 
+----+-----------+------------+
Run Code Online (Sandbox Code Playgroud)

基本上我想结束policy_id1只有一个power_unit=1.相同的policy_id2,3,4等.对于policy_id6,什么都不应该改变(只有一个条目,它已经是power_unit).

我不知道这是否可能,但对我来说这是一个有趣的问题,所以我认为你们可能会发现它是一样的.

更新:
我不想要DELETE行,只需要UPDATE它们power_unit=0.

Qua*_*noi 5

UPDATE  test1 t1,
        (
        SELECT  policy, MIN(ti.id) AS mid
        FROM    test1 ti
        GROUP BY
                policy
        ) tm
SET     power_unit = 0
WHERE   t1.policy = tm.policy
        AND t1.id <> tm.mid;
Run Code Online (Sandbox Code Playgroud)