728x90
반응형
질문 : SQL Server에서 JOIN을 사용하여 UPDATE 문을 어떻게 수행 할 수 있습니까?
SQL Server 에서이 테이블을 '부모'테이블의 데이터로 업데이트해야합니다. 아래를 참조하십시오.
표 : 판매
id (int) udid (int) assid (int)
표 : ud
id (int) assid (int)
sale.assid
업데이트에 대한 올바른 값이 포함되어 ud.assid
.
이 작업을 수행하는 쿼리는 무엇입니까? join
생각하고 있지만 가능한지 잘 모르겠습니다.
답변
구문은 사용중인 SQL DBMS에 따라 다릅니다. 다음은 ANSI / ISO (모든 SQL DBMS에서 작동해야 함), MySQL, SQL Server 및 Oracle에서이를 수행하는 몇 가지 방법입니다. 내가 제안한 ANSI / ISO 방법은 일반적으로 다른 두 방법보다 훨씬 느리지 만 MySQL, SQL Server 또는 Oracle 이외의 SQL DBMS를 사용하는 경우 유일한 방법 일 수 있습니다 (예 : 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;
Postgres FROM
절에서 대상 테이블을 반복해서는 안됩니다.
신탁:
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
);
출처 : https://stackoverflow.com/questions/1293330/how-can-i-do-an-update-statement-with-join-in-sql-server
728x90
반응형
'프로그래밍 언어 > Database' 카테고리의 다른 글
MongoDB 데이터베이스의 모든 항목 삭제 (0) | 2021.06.07 |
---|---|
SQL Server 테이블에 열이 있는지 확인하는 방법 (0) | 2021.06.06 |
PostgreSQL 데이터베이스를 다른 서버로 복사 (0) | 2021.06.06 |
MySQL에서 명령 줄을 사용하여 사용자 계정 목록을 얻는 방법 (0) | 2021.06.06 |
SQL Server DateTime 데이터 형식에서 날짜 만 반환하는 방법 (0) | 2021.06.06 |