我有两列的桌子

rule_id , passenger_type

具有
PRIMARY KEY (rule_id , passenger_type)

我正试图更新乘客的位置
乘客输入('C02','C03','C04')
但是对于每个规则id只有第一次出现
我在用oracle数据库
例如:
+--------------------------+
| rule_id   passenger_type |
+--------------------------+
| 1         ADT            |
| 1         CH2            |
| 2         SWR            |
| 3         INF            |
| 1         CH3            |
| 2         CH4            |
| 2         CH3            |
| 3         ADT            |
+--------------------------+

预期结果:
+--------------------------+
| rule_id   passenger_type |
+--------------------------+
| 1         ADT            |
| 1         CNN            |
| 2         SWR            |
| 3         INF            |
| 1         CH3            |
| 2         CNN            |
| 2         CH3            |
| 3         ADT            |
+--------------------------+

最佳答案

如果没有正确的表顺序,“第一次出现”的概念有点模糊,但这将为每个规则id更新一行

update dg_test d
set passenger_type  = 'CNN'
where (d.rule_id, d.passenger_type) in (select x.rule_id, min(x.passenger_type )
                                        from dg_test x
                                        where x.rule_id = d.rule_id
                                        group by x.rule_id)

10-08 13:36