SQL update select 결합 문장 상세 및 응용

2522 단어 SQLupdateselect
QL update select 문
가장 자주 사용하는 업데이트 문법은 다음과 같습니다.

UPDATE TABLE_NAME
SET column_name1 = VALUE WHRER column_name2 = VALUE
만약 나의 업데이트값 Value가 select 문장에서 꺼내지고 열이 많으면 이런 문법을 사용하는 것은 매우 번거롭다
첫째, select를 임시 변수에 놓으려면 저장하기 어려운 것이 많습니다.둘째, 변수를 부여한다.
열이 많으면 매우 번거롭습니다. Insert처럼 전체 Select 문장의 결과를 삽입할 수 있습니까?마치 아래와 같다.

INSERT INTO table1
(c1, c2, c3)
(SELECT v1, v2, v3 FROM table2)
답은 가능합니다. 구체적인 문법은 다음과 같습니다.

UPDATE table1 alias
SET (column_name,column_name ) = (
SELECT (column_name, column_name)
FROM table2
WHERE column_name = alias.column_name)
WHERE column_name = VALUE
다음은 다음과 같은 예입니다. 두 개의 테이블 a, b, b의 memo 필드 값을 a표에 대응하는 id의name 값 테이블 a와 같게 하려면:

id  name 
1     
2     
3    
표 b:

id ClientName 
1 
2 
3
(MS SQL Server) 문:

UPDATE b  SET  ClientName  = a.name  FROM a,b  WHERE a.id = b.id
(Oralce) 문:

UPDATE b  SET  (ClientName)  =  (SELECT name FROM a WHERE b.id = a.id)
업데이트 setfrom 문장 형식은where와set가 하나의 테이블과 연결되어 조회를 해야 할 때, 전체 업데이트가 실행될 때, 연결된 테이블을 두 번 스캔해야 하기 때문에 효율이 비교적 낮다.
이런 상황에 대해 Sybase와 SQL Server의 해결 방법은 업데이트...SET...FROM...WHERE...의 문법을 사용하는 것이다. 사실상 원본 테이블에서 업데이트 데이터를 얻는 것이다.
SQL에서 테이블 연결(leftjoin,rightjoin,innerjoin 등)은 select 문장에 자주 사용된다.사실 SQL 문법에서 이러한 연결도 업데이트와 delete 문장에 사용할 수 있으며, 이 문장에서join을 사용하면 적은 노력으로 큰 효과를 얻을 수 있다.

UPDATE T_OrderForm SET T_OrderForm.SellerID =B.L_TUserID
FROM T_OrderForm A LEFT JOIN T_ProductInfo  B ON B.L_ID=A.ProductID
두 테이블의 데이터를 동기화하는 데 사용합니다!
Oralce 및 DB2에서 지원되는 구문:

UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
MS SQL Server는 다음과 같은 구문을 지원하지 않습니다.

UPDATE A SET A1 = B1, A2 = B2, A3 = B3 FROM A LEFT JOIN B ON A.ID = B.ID
개인적으로 MS SQL Server의 Update 구문 기능은 더욱 강력합니다.MS SQL SERVER 쓰기 방법:

UPDATE A SET A1 = B1, A2 = B2, A3 = B3 FROM A, B WHERE A.ID = B.ID
Oracle 및 DB2에서는 다음과 같이 쓰기가 번거로워집니다.

UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID)
SQL update select 결합 문장에 대한 상세한 설명과 응용에 관한 이 글을 소개합니다. 더 많은 SQL update select 결합 문장 내용은 저희 이전의 문장을 검색하거나 아래의 관련 문장을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기