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