sql >> Database >  >> RDS >> Sqlserver

sql-update (help me)

Zoek eerst uit welke records moeten worden bijgewerkt:

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

Pas nu de query aan om die records bij te werken met de juiste grp_id. Merk op dat ik een extra join heb toegevoegd aan de tbl_group tabel met een alias van "g2". Dit is de juiste groep.

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

Houd er rekening mee dat vanwege de inner join op tbl_group g2 de records niet worden bijgewerkt als er geen tbl_group-record bestaat waarbij indicat overeenkomt met de indicat-waarde van het bijbehorende tbl_indicator-record.




  1. Rijen ophalen op basis van voorwaarde

  2. Geval Wanneer Verschillende waarde dan een andere waarde optellen?

  3. Tabellen en kolommen neerzetten met SQL

  4. Hoe een aangepaste kolom in tabelvorm toe te voegen?