복붙노트

[SQL] SQL에서 여러 열을 업데이트

SQL

SQL에서 여러 열을 업데이트

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

뭔가 같은 :

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 + 열이있는 경우 쓰기 꽤 무심 할 수 있습니다.

해결법

  1. ==============================

    1.은 "귀찮은 방법은"표준 SQL 어떻게 주류 RDBMS 그것을 할 것입니다.

    은 "귀찮은 방법은"표준 SQL 어떻게 주류 RDBMS 그것을 할 것입니다.

    100 개 이상의 열을 사용하면 대부분 가능성이 디자인 문제가 ... 또한, 완화 클라이언트 도구의 방법 (예를 들면 세대 UPDATE 문) 또는으로 ORMs을 사용하여이있다

  2. ==============================

    2.이 시도:

    이 시도:

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

    즉 오라클을 제외한 대부분의 SQL 언어에서 작동합니다.

    그리고 네 - 그것은 많은 타이핑입니다 - 그것은 SQL이이 작업을 수행하는 방식이다.

  3. ==============================

    3.업데이트 설정 표 (A, B, C)은 = (일부는 X, Y, x)는 구문의 사용의 예는 행 값 생성자, 오라클이 지원, MSSQL하지 않습니다. (연결 항목)

    업데이트 설정 표 (A, B, C)은 = (일부는 X, Y, x)는 구문의 사용의 예는 행 값 생성자, 오라클이 지원, MSSQL하지 않습니다. (연결 항목)

  4. ==============================

    4.귀하의 질의는 거의 정확합니다. 이에 대한 T-SQL은 다음과 같습니다

    귀하의 질의는 거의 정확합니다. 이에 대한 T-SQL은 다음과 같습니다

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

    5.통사론

    통사론

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

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

    6.

       UPDATE t1 
        SET 
        t1.a = t2.a,
        t1.b = t2.b,
        .
        .
        .
    
    
        FROM 
        table1 t1 
        INNER JOIN table2 t2 ON  t1.id=t2.id
    

    이 시도 할 수 있습니다

  7. ==============================

    7.나는이 방법과 그 작업 벌금 시도 :

    나는이 방법과 그 작업 벌금 시도 :

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

    8.여기서 일하는 하나입니다 :

    여기서 일하는 하나입니다 :

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

    값 table_2에서 열인

  9. ==============================

    9.이 여러 번 다시 입력해야하는 경우 한번 그랬던 것처럼, 당신은 할 수 있습니다. 오른쪽에있는 엑셀 시트 (++ 메모장에 쉽게 각 열 이름 (=)의 끝 부분에 적어)의 행으로 columns` 이름을 가져옵니다은 복사에서 새 항목에 해당됩니다 값을 붙여 열을 각 컬럼. 설계대로 그리고 독립적 인 열에서 그 오른쪽에 쉼표를 넣어

    이 여러 번 다시 입력해야하는 경우 한번 그랬던 것처럼, 당신은 할 수 있습니다. 오른쪽에있는 엑셀 시트 (++ 메모장에 쉽게 각 열 이름 (=)의 끝 부분에 적어)의 행으로 columns` 이름을 가져옵니다은 복사에서 새 항목에 해당됩니다 값을 붙여 열을 각 컬럼. 설계대로 그리고 독립적 인 열에서 그 오른쪽에 쉼표를 넣어

    그런 다음 중간 열에 때마다 당신의 값을 복사 만 한 후 붙여 넣기를 실행해야합니다

    나는 쉬운 솔루션을 모른다

  10. ==============================

    10.나는 이런 종류의 질문을 해결하는 방법을 당신과 함께 공유하고 싶습니다. 표 2의 결과는 동적이며, 열 번호는 이하 표 1에 비해 수있는 바와 같이 제 경우 약간 다르다. 그러나 개념은 동일합니다.

    나는 이런 종류의 질문을 해결하는 방법을 당신과 함께 공유하고 싶습니다. 표 2의 결과는 동적이며, 열 번호는 이하 표 1에 비해 수있는 바와 같이 제 경우 약간 다르다. 그러나 개념은 동일합니다.

    첫째, 표 2의 결과를 얻을.

    다음, 그것을 피벗 해제.

    그런 다음 동적 SQL을 사용하여 업데이트 쿼리를 작성합니다. 샘플 코드는이 개 간단한 테이블을 테스트하기 위해 작성된 것입니다 - TBLA 및 tblB

    --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 :

  11. ==============================

    11.내가 MySQL의에서 이런 짓을하고 당신이 당신의 서버로 MySQL을 사용하는 경우 그래서 이것을 시도, 단일 레코드에 여러 열을 업데이트 :

    내가 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을 사용하는 당신은 멀리로 좋아하는 프로그래밍 언어에 걸릴 수 있습니다.

  12. ==============================

    12.

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

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

  13. ==============================

    13.

    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
    
  14. from https://stackoverflow.com/questions/9079617/update-multiple-columns-in-sql by cc-by-sa and MIT license