sql >> Base de Datos >  >> RDS >> Sqlserver

actualización de sql (ayúdame)

Primero, averigüe qué registros deben actualizarse:

select *
from tbl_order o
inner join tbl_group g on
    g.grp_id = o.grp_id
inner join tbl_indicator i on
    i.grp_nbr = g.grp_nbr
    and i.sect_nbr = g.sect_nbr
where
    g.indicat != i.indicat

Ahora, modifique la consulta para actualizar esos registros con el grp_id correcto. Tenga en cuenta que agregué una combinación adicional a la tabla tbl_group con un alias de "g2". Este será el grupo correcto.

update o set
    o.grp_id = g2.grp_id
from tbl_order o
inner join tbl_group g on
    g.grp_id = o.grp_id
inner join tbl_indicator i on
    i.grp_nbr = g.grp_nbr
    and i.sect_nbr = g.sect_nbr
inner join tbl_group g2 on
    g2.grp_nbr = i.grp_nbr
    and g2.sect_nbr = i.sect_nbr
    and g2.indicat = i.indicat
where
    g.indicat != i.indicat

Tenga en cuenta que debido a la unión interna en tbl_group g2, los registros no se actualizarán si no existe ningún registro tbl_group donde indicat coincida con el valor indicat de su registro tbl_indicator asociado.