Я пытаюсь обновить набор отдельных записей в базе данных Oracle 11g, и у меня возникли небольшие проблемы с его выяснением. Я могу выбрать записи, которые хочу обновить без проблем, но продолжаю сталкиваться с проблемами при попытке обновления.
Чтобы выбрать записи, которые я хочу обновить, я могу выбрать их с помощью этого запроса:
select distinct p.irp_pla_platenbr, v.irp_veh_vin, v.irp_veh_titlenbr, vd.vin, vd.vehicle_unique, vd.title_number, vd.plate_reg, vd.year_reg, p.irp_pla_year, p.irp_pla_status
from irp.irp_vehicles v
inner join irp.irp_fleetvehicleregistration fvr on fvr.irp_fvr_vehicleid = v.irp_veh_id
inner join irp.irp_plates p on p.irp_pla_vehicleid = fvr.irp_fvr_vehicleid and p.irp_pla_status = 'A'
inner join VINDECODE.veh_2019 vd on vd.title_number = v.irp_veh_titlenbr
where v.irp_veh_regdate >= '01-NOV-19'
and p.irp_pla_platenbr <> vd.plate_reg
and vd.plate_reg like 'A%'
Здесь я хотел бы обновить этот набор отдельных записей, установив p.irp_pla_platenbr = vd.plate_reg;
Я попытался сделать это несколькими способами:
Попытка 1:
UPDATE
(
select distinct p.irp_pla_platenbr, v.irp_veh_vin, v.irp_veh_titlenbr, vd.vin, vd.vehicle_unique, vd.title_number, vd.plate_reg, vd.year_reg, p.irp_pla_year, p.irp_pla_status
from irp.irp_vehicles v
inner join irp.irp_fleetvehicleregistration fvr on fvr.irp_fvr_vehicleid = v.irp_veh_id
inner join irp.irp_plates p on p.irp_pla_vehicleid = fvr.irp_fvr_vehicleid and p.irp_pla_status = 'A'
inner join VINDECODE.veh_2019 vd on vd.title_number = v.irp_veh_titlenbr
where v.irp_veh_regdate >= '01-NOV-19'
and p.irp_pla_platenbr <> vd.plate_reg
and vd.plate_reg like 'A%'
)
set p.irp_pla_platenbr = vd.plate_reg;
Попытка 2:
update irp_plates set irp_pla_platenbr =
(select vd.plate_reg
from irp.irp_vehicles v
inner join irp.irp_fleetvehicleregistration fvr on fvr.irp_fvr_vehicleid = v.irp_veh_id
inner join irp.irp_plates p on p.irp_pla_vehicleid = fvr.irp_fvr_vehicleid and p.irp_pla_status = 'A'
inner join VINDECODE.veh_2019 vd on vd.title_number = v.irp_veh_titlenbr
where v.irp_veh_regdate >= '01-NOV-19'
and p.irp_pla_platenbr <> vd.plate_reg
and vd.plate_reg like 'A%')
where exists
(select distinct p.irp_pla_platenbr, v.irp_veh_vin, v.irp_veh_titlenbr, vd.vin, vd.vehicle_unique, vd.title_number, vd.plate_reg, vd.year_reg, p.irp_pla_year, p.irp_pla_status
from irp_vehicles v
inner join irp.irp_fleetvehicleregistration fvr on fvr.irp_fvr_vehicleid = v.irp_veh_id
inner join irp.irp_plates p on p.irp_pla_vehicleid = fvr.irp_fvr_vehicleid and p.irp_pla_status = 'A'
inner join VINDECODE.veh_2019 vd on vd.title_number = v.irp_veh_titlenbr
where v.irp_veh_regdate >= '01-NOV-19'
and p.irp_pla_platenbr <> vd.plate_reg
and vd.plate_reg like 'A%');
Я продолжаю получать ошибки, не повезло, когда я пытался выяснить, как обновить это. Любые идеи или предложения будут очень цениться. Спасибо Крис