我有两列的桌子
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)