sql >> Database teknologi >  >> RDS >> Sqlserver

sql-opdatering (hjælp mig)

Først skal du finde ud af, hvilke poster der skal opdateres:

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

Rediger nu forespørgslen for at opdatere disse poster med det korrekte grp_id. Bemærk, at jeg har tilføjet en ekstra join til tabellen tbl_group med et alias "g2". Dette vil være den rigtige gruppe.

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

Bemærk, at på grund af den indre joinforbindelse på tbl_group g2, vil posterne ikke blive opdateret, hvis der ikke eksisterer nogen tbl_group-record, hvor indicat matcher indicat-værdien af ​​dens tilknyttede tbl_indicator-record.




  1. Ikke-understøttet version 52.0

  2. krydstabulator med 2 (eller flere) rækkenavne

  3. MySQL-opdatering ved hjælp af PDO og forberedt erklæring virker ikke

  4. Databaseredigering med godkendelse - mysql