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
'prosource' 카테고리의 다른 글
powershell의 & 기호는 무엇을 의미합니까? (0) | 2023.04.08 |
---|---|
SQL "between" (사이에 포함되지 않음) (0) | 2023.04.08 |
SQL WHERE...IN 절 다중 열 (0) | 2023.04.08 |
Powershell - Invoke-WebRequest 사용이 브라우저 다운로드보다 느린 이유는 무엇입니까? (0) | 2023.04.08 |
명령줄 인수를 PowerShell ps1 파일에 전달하는 방법 (0) | 2023.04.08 |