[SQL] 내부 조인에서 SQL 업데이트
SQL내부 조인에서 SQL 업데이트
나는 Microsoft Access를 사용하고 있습니다.
이 쿼리 경우 :
(SELECT FERMENT.FermentId
FROM FERMENT
INNER JOIN [BELGIUM BEER]
ON
FERMENT.FermentName = [BELGIUM BEER].FermentId ORDER BY [BELGIUM BEER].BeerId) a
FermentId, 어떻게 그 열이있는 다른 테이블을 업데이트 할 반환?
예:
UPDATE EXAMPLETABLE
SET EXAMPLETABLE.FermentId = a.FermentId
FROM a
(SELECT FERMENT.FermentId
FROM FERMENT
INNER JOIN [BELGIUM BEER]
ON
FERMENT.FermentName = [BELGIUM BEER].FermentId ORDER BY [BELGIUM BEER].BeerId) a
해결법
-
==============================
1.하위 쿼리 반환 더 한 값보다 업데이트에 당신이 원하는 새로운 가치와 테이블 (EXAMPLETABLE) 사이에 (가입)를 연결하는 두 번째 키를 필요로한다고 가정.
하위 쿼리 반환 더 한 값보다 업데이트에 당신이 원하는 새로운 가치와 테이블 (EXAMPLETABLE) 사이에 (가입)를 연결하는 두 번째 키를 필요로한다고 가정.
이 경우 나는 이런 식으로 뭔가를 시도 할 것입니다 :
UPDATE T SET T.FERMENTID = A.FERMENTID FROM EXAMPLETABLE AS T INNER JOIN (SELECT FERMENT.FERMENTID, FERMENT.OTHERID FROM FERMENT INNER JOIN [BELGIUM BEER] ON FERMENT.FERMENTNAME = [BELGIUM BEER].FERMENTID ORDER BY [BELGIUM BEER].BEERID) AS A ON A.OTHERID = T.OTHERID
이 경우 서브 쿼리가 반환 한 값이 아닌 경우,이 같은 시도 :
UPDATE EXAMPLETABLE SET T.FERMENTID = (SELECT FERMENT.FERMENTID FROM FERMENT INNER JOIN [BELGIUM BEER] ON FERMENT.FERMENTNAME = [BELGIUM BEER].FERMENTID ORDER BY [BELGIUM BEER].BEERID)
참고이 경우 당신은 하위 쿼리가 하나 개 이상의 행을 반환하지 않을 것이라는 점을 보장 할 필요가 있음!
-
==============================
2.확실하지 데이터와 EXAMPLETABLE의 관계가 있지만, 일반적으로 무엇인지.
확실하지 데이터와 EXAMPLETABLE의 관계가 있지만, 일반적으로 무엇인지.
Access에서 SET 부분은 가입 후, 또한 의해 순서 엉 선택 부분을 건너 뛸 수 있습니다. 이 같은이어야한다
UPDATE FERMENT INNER JOIN ([BELGIUM BEER] ON FERMENT.FermentName = [BELGIUM BEER].FermentId) SET EXAMPLETABLE.FermentColumn = a.FermentColumn
그렇지 않은 작업을 구축하려고 않으면 쿼리 빌더에 참여
-
==============================
3.두 테이블 간의 관계를 정의 할 필요가 없습니다. 10 (Arnoldiusss)이 거의 정확하고 가장 이해와 짧은 솔루션 지금까지 답변. 그리고 실행에서 가장 빠른. 그러나 예제 코드는 잘못된 것입니다. 다음 코드는 내 응용 프로그램 중 하나에서오고 MS ACCESS 2013 년 벌금을 실행합니다.
두 테이블 간의 관계를 정의 할 필요가 없습니다. 10 (Arnoldiusss)이 거의 정확하고 가장 이해와 짧은 솔루션 지금까지 답변. 그리고 실행에서 가장 빠른. 그러나 예제 코드는 잘못된 것입니다. 다음 코드는 내 응용 프로그램 중 하나에서오고 MS ACCESS 2013 년 벌금을 실행합니다.
UPDATE table1 T1 INNER JOIN table2 T2 ON T2.Id = T1.Id SET T1.myField = T2.myField;
"벨기에 맥주 케이스"에 대한 (나는 그 표현을 사랑 ;-)이 될 것이다 :
UPDATE FERMENT AS T1 INNER JOIN [BELGIUM BEER] AS T2 ON T1.FermentName = T2.FermentId SET T1.FermentColumn1 = T2.FermentColumn1;
from https://stackoverflow.com/questions/12882212/sql-updating-from-an-inner-join by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 날짜 시간 SQL에 유닉스 시간을 변환 (오라클) (0) | 2020.04.12 |
---|---|
[SQL] 무엇 하위 쿼리를 EXISTS에서 쉽게 읽을 수있다? [닫은] (0) | 2020.04.12 |
[SQL] SQL 서버 결정적 사용자 정의 함수 (0) | 2020.04.12 |
[SQL] 데이터베이스 내에서 주소 표준화 (0) | 2020.04.12 |
[SQL] 이유는 하나의 SQL 쿼리에 대한 더 많은 CPU를 소비하는 오라클 11g를 강제 수없는 것 (0) | 2020.04.12 |