Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

aktualizacja sql (pomóż mi )

Najpierw ustal, które rekordy wymagają aktualizacji:

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

Teraz zmodyfikuj zapytanie, aby zaktualizować te rekordy z poprawnym identyfikatorem grp_id. Zauważ, że dodałem dodatkowe sprzężenie do tabeli tbl_group z aliasem "g2". To będzie właściwa grupa.

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

Zwróć uwagę, że z powodu wewnętrznego sprzężenia w tbl_group g2, rekordy nie zostaną zaktualizowane, jeśli nie istnieje żaden rekord tbl_group, w którym indicat odpowiada wartości indicat powiązanego z nim rekordu tbl_indicator.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2008 — Jak zwrócić typ tabeli zdefiniowanej przez użytkownika z funkcji o wartościach przechowywanych w tabeli?

  2. Nie możesz użyć tymczasowej kolumny w klauzuli where?

  3. SQL Server:Ponowne zgłoszenie wyjątku z oryginalnym numerem wyjątku

  4. Zrozumienie funkcji GROUPING i GROUPING_ID w programie SQL Server

  5. pobierz część daty tylko z wartości daty i godziny za pomocą struktury encji