Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 是否更新除一个结果以外的所有结果?_Mysql_Sql Update - Fatal编程技术网

Mysql 是否更新除一个结果以外的所有结果?

Mysql 是否更新除一个结果以外的所有结果?,mysql,sql-update,Mysql,Sql Update,我正在尝试更新一个表以删除组的第一个实例以外的所有实例。基本上,我有一个与保险单相关的车辆数据表。每个策略只能有一个电源单元。其他的都应该是拖拽装置。不幸的是,一个bug复制了电源单元,现在我需要清理这个。数据库中有约10k条记录,其中约4k条记录的功率单位增加了一倍 目前,我的表中的重要部分称之为test1: +------------+---------+------+-----+---------+----------------+ | Field | Type | Nul

我正在尝试更新一个表以删除组的第一个实例以外的所有实例。基本上,我有一个与保险单相关的车辆数据表。每个策略只能有一个电源单元。其他的都应该是拖拽装置。不幸的是,一个bug复制了电源单元,现在我需要清理这个。数据库中有约10k条记录,其中约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       |                | 
+------------+---------+------+-----+---------+----------------+
以及一些样本数据:

+----+-----------+------------+
| 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 | 
+----+-----------+------------+
基本上,我想在policy\u id 1只有一个power\u unit=1的情况下结束。对于策略_id 2、3、4等也一样。对于策略_id 6,不应更改任何内容只有一个条目,并且它已经是一个电源单元

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

更新: 我不想删除这些行,只需将它们更新为power\u unit=0

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;