Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как мога да направя израз UPDATE с JOIN в SQL Server?

Синтаксисът строго зависи от това коя SQL СУБД използвате. Ето няколко начина да го направите в ANSI/ISO (известен още като трябва да работи на всяка SQL СУБД), MySQL, SQL Server и Oracle. Имайте предвид, че предложеният от мен ANSI/ISO метод обикновено ще бъде много по-бавен от другите два метода, но ако използвате SQL СУБД, различна от MySQL, SQL Server или Oracle, тогава това може да е единственият начин (напр. ако вашата SQL СУБД не поддържа MERGE ):

ANSI/ISO:

update ud 
     set assid = (
          select sale.assid 
          from sale 
          where sale.udid = ud.id
     )
 where exists (
      select * 
      from sale 
      where sale.udid = ud.id
 );

MySQL:

update ud u
inner join sale s on
    u.id = s.udid
set u.assid = s.assid

SQL сървър:

update u
set u.assid = s.assid
from ud u
    inner join sale s on
        u.id = s.udid

PostgreSQL:

update ud
  set assid = s.assid
from sale s 
where ud.id = s.udid;

Имайте предвид, че целевата таблица не трябва да се повтаря в FROM клауза за Postgres.

Оракул:

update
    (select
        u.assid as new_assid,
        s.assid as old_assid
    from ud u
        inner join sale s on
            u.id = s.udid) up
set up.new_assid = up.old_assid

SQLite:

update ud 
     set assid = (
          select sale.assid 
          from sale 
          where sale.udid = ud.id
     )
 where RowID in (
      select RowID 
      from ud 
      where sale.udid = ud.id
 );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възможно ли е да се използва `SqlDbType.Structured` за предаване на параметри с таблица с стойност в NHibernate?

  2. Достъпът е отказан при прикачване на база данни

  3. Как да премахнете HTML тагове от низ в SQL Server?

  4. Как да получите максимални и минимални стойности от таблица с помощта на агрегатна функция - SQL Server / TSQL урок, част 129

  5. Как програмно да създадете ODBC свързана таблица към изглед на SQL сървър и да може да бъде редактирана?