prosource

SQL의 여러 열 업데이트

probook 2023. 4. 8. 08:39
반응형

SQL의 여러 열 업데이트

삽입문을 사용하는 것과 동일한 방법으로 SQL Server의 여러 열을 업데이트하는 방법이 있습니까?

예를 들어 다음과 같습니다.

Update table1 set (a,b,c,d,e,f,g,h,i,j,k)=
(t2.a,t2.b,t2.c,t2.d,t2.e,t2.f,t2.g,t2.h,t2.i,t2.j,t2.k)
from table2 t2
where table1.id=table2.id

아니면 그런 것 보다는 그런 것:

update table set a=t2.a,b=t2.b etc 

100개 이상의 컬럼이 있는 경우 쓰기에는 상당히 번거로울 수 있습니다.

이것을 시험해 보세요.

UPDATE table1 
SET a = t2.a, b = t2.b, .......
FROM table2 t2
WHERE table1.id = t2.id

Oracle을 제외한 대부분의 SQL 방언에서 사용할 수 있습니다.

네, 많은 타이핑이 가능합니다.SQL이 이 작업을 수행하는 방법입니다.

'간단한 방법'은 표준 SQL이며, 미드레인지 RDBMS가 이를 수행하는 방법입니다.

100개 이상의 열이 있는 경우 대부분 설계에 문제가 있을 수 있습니다.또한 클라이언트 도구(예: Generation UPDATE 문) 또는 ORM을 사용하여 경감 방법이 있습니다.

구문

UPDATE table-name 
SET column-name = value, column-name = value, ...
WHERE condition


UPDATE school
SET course = 'mysqli', teacher = 'Tanzania', student = 'you'
WHERE id = 6

당신의 질문은 거의 정확합니다.이를 위한 T-SQL은 다음과 같습니다.

UPDATE  Table1
SET     Field1 = Table2.Field1,
        Field2 = Table2.Field2,
        other columns...
FROM    Table2
WHERE   Table1.ID = Table2.ID

Update table1 set (a,b,c) = (select x,y,x)구문은 행 값 생성자를 사용하는 예입니다. Oracle은 이를 지원하지만 MSSQL은 지원하지 않습니다. (연결 항목)

   UPDATE t1 
    SET 
    t1.a = t2.a,
    t1.b = t2.b,
    .
    .
    .


    FROM 
    table1 t1 
    INNER JOIN table2 t2 ON  t1.id=t2.id

이거 드셔보세요

이 방법으로 시험해 보니 정상적으로 동작하고 있습니다.

UPDATE 
  Emp
SET 
  ID = 123, 
  Name = 'Peter' 
FROM 
  Table_Name

다음 중 하나가 유효합니다.

UPDATE  `table_1`
INNER JOIN 
 `table_2` SET  col1= value, col2= val,col3= val,col4= val;

value는 table_2의 컬럼입니다.

여러 번 다시 입력해야 하는 경우 한 번처럼 다시 입력할 수 있습니다.오른쪽의 Excel 시트의 행(메모장++에 쉬운 각 열 이름(=)의 끝에 적음)으로 컬럼의 새 엔트리에 대응하는 컬럼을 복사하여 붙여넣습니다.그런 다음 오른쪽 독립 열에 지정된 대로 쉼표를 입력합니다.

그런 다음 매번 중간 열에 값을 복사한 후 붙여넣고 실행해야 합니다.

더 쉬운 해결책은 모르겠다

이런 질문에 어떻게 대처해야 할지 알려드리고 싶습니다.제 경우는 table2의 결과가 동적이고 컬럼 번호가 table1의 결과보다 작을 수 있기 때문에 조금 다릅니다.근데 콘셉트는 똑같아요.

먼저 표2의 결과를 구합니다.

여기에 이미지 설명 입력

그 다음, 빼세요.

여기에 이미지 설명 입력

그런 다음 동적 SQL을 사용하여 업데이트 쿼리를 작성합니다.샘플 코드는 tblA와 tblB의 2개의 간단한 테이블을 테스트하기 위해 작성되었습니다.

--CREATE TABLE tblA(id int, col1 VARCHAR(25), col2 VARCHAR(25), col3 VARCHAR(25), col4 VARCHAR(25))
--CREATE TABLE tblB(id int, col1 VARCHAR(25), col2 VARCHAR(25), col3 VARCHAR(25), col4 VARCHAR(25))
--INSERT INTO tblA(id, col1, col2, col3, col4)
--VALUES(1,'A1','A2','A3','A4')
--INSERT INTO tblB(id, col1, col2, col3, col4)
--VALUES(1,'B1','B2','B3','B4')

DECLARE @id VARCHAR(10) = 1, @TSQL NVARCHAR(MAX)
DECLARE @tblPivot TABLE(    
    colName VARCHAR(255),
    val VARCHAR(255)
)

INSERT INTO @tblPivot
SELECT colName, val
FROM tblB
UNPIVOT
(
    val
    FOR colName IN (col1, col2, col3, col4)
) unpiv
WHERE id = @id

SELECT @TSQL = COALESCE(@TSQL + '''
,','') + colName + ' = ''' + val
FROM @tblPivot

SET @TSQL = N'UPDATE tblA
SET ' + @TSQL + ''' 
WHERE id = ' + @id
PRINT @TSQL
--EXEC SP_EXECUTESQL @TSQL

PRINT @TSQL결과:

여기에 이미지 설명 입력

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

http://www.w3schools.com/sql/sql_update.asp

MySql에서 이 작업을 수행했는데 단일 레코드의 여러 열을 업데이트했으므로 MySql을 서버로 사용하는 경우 다음을 시도해 보십시오.

"UPDATE creditor_tb SET credit_amount='" & CDbl(cur_amount) & "'
                   , totalamount_to_pay='" & current_total & "',   
        WHERE credit_id='" & lbcreditId.Text & "'". 

다만, 저는 MySql 서버를 사용하여 vb.net에서 코딩하고 있었습니다만, MySql을 서버로 사용하고 있는 한, 마음에 드는 프로그래밍 언어로 이행할 수 있습니다.

update T1
set T1.COST2=T1.TOT_COST+2.000,
T1.COST3=T1.TOT_COST+2.000,
T1.COST4=T1.TOT_COST+2.000,
T1.COST5=T1.TOT_COST+2.000,
T1.COST6=T1.TOT_COST+2.000,
T1.COST7=T1.TOT_COST+2.000,
T1.COST8=T1.TOT_COST+2.000,
T1.COST9=T1.TOT_COST+2.000,
T1.COST10=T1.TOT_COST+2.000,
T1.COST11=T1.TOT_COST+2.000,
T1.COST12=T1.TOT_COST+2.000,
T1.COST13=T1.TOT_COST+2.000
from DBRMAST T1 
inner join DBRMAST t2 on t2.CODE=T1.CODE

언급URL : https://stackoverflow.com/questions/9079617/update-multiple-columns-in-sql

반응형