我有两列的表
rule_id , passenger_type
与
PRIMARY KEY (rule_id , passenger_type)
我试图更新passenger_type =' CNN'哪里 passenger_type in(' C02',' C03',' C04')
但只是每个rule_id的第一次出现
我正在使用oracle db
例如:
+--------------------------+
| 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 |
+--------------------------+
答案 0 :(得分:2)
没有适当的表序列,“第一次出现”的想法有点毛茸茸,但这会为每个rule_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)