sql >> Databasteknik >  >> RDS >> Sqlserver

sql-uppdatering (hjälp mig)

Ta först reda på vilka poster som behöver uppdateras:

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

Ändra nu frågan för att uppdatera dessa poster med rätt grp_id. Lägg märke till att jag har lagt till en extra join till tabellen tbl_group med aliaset "g2". Detta kommer att vara rätt grupp.

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

Observera att på grund av den inre kopplingen på tbl_group g2 kommer posterna inte att uppdateras om det inte finns någon tbl_group-post där indicat matchar indicatvärdet för dess associerade tbl_indicator-post.




  1. Ta bort rader med MySQL LEFT JOIN

  2. Rails 3.0.3 - Oracle_enhanced fungerar inte

  3. Hur kan jag skapa ett DSN programmatiskt?

  4. SQL Server - parametersniffning