복붙노트

[SQL] 다른 테이블 값으로 갱신 MySQL의 열에

SQL

다른 테이블 값으로 갱신 MySQL의 열에

난 둘처럼 보이는 두 개의 테이블이

id  name  value
===================
1   Joe     22
2   Derk    30

나는 각 테이블에서 검사 이름을 기반으로 TableB의에 TABLEA에서 값의 값을 복사해야합니다.

이 UPDATE 문에 대한 모든 팁?

해결법

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

    1.이 답변 외에도 동적 당신이 예를 위해 할 수있는 table.value에 따라 변경 table.value해야하는 경우 :

    이 답변 외에도 동적 당신이 예를 위해 할 수있는 table.value에 따라 변경 table.value해야하는 경우 :

    UPDATE tableB
    INNER JOIN tableA ON tableB.name = tableA.name
    SET tableB.value = IF(tableA.value > 0, tableA.value, tableB.value)
    WHERE tableA.name = 'Joe'
    
  2. ==============================

    2.당신은 두 개의 테이블에 가입해야합니다 :

    당신은 두 개의 테이블에 가입해야합니다 :

    예를 들어 당신은 그들이 ID가 같은 곳 TableB의에 TABLEA에서 이름의 값을 복사 할

    UPDATE tableB t1 
            INNER JOIN tableA t2 
                 ON t1.id = t2.id
    SET t1.name = t2.name 
    WHERE t2.name = 'Joe'
    

    UPDATE 1

    UPDATE tableB t1 
            INNER JOIN tableA t2 
                 ON t1.id = t2.id
    SET t1.name = t2.name 
    

    업데이트 2

    UPDATE tableB t1 
            INNER JOIN tableA t2 
                 ON t1.name = t2.name
    SET t1.value = t2.value
    
  3. ==============================

    3.두 번째 가능성은있다

    두 번째 가능성은있다

    UPDATE TableB 
    SET TableB.value = (
        SELECT TableA.value 
        FROM TableA
        WHERE TableA.name = TableB.name
    );
    
  4. ==============================

    4.당신이 안전 업데이트 모드를 사용하고 (그리고 당신이없이 테이블을 업데이트하려고했습니다 나타내는 오류를 얻고있는 곳 사용하는 KEY 열) 경우 두 번째 옵션은 가능도 추가하여 :

    당신이 안전 업데이트 모드를 사용하고 (그리고 당신이없이 테이블을 업데이트하려고했습니다 나타내는 오류를 얻고있는 곳 사용하는 KEY 열) 경우 두 번째 옵션은 가능도 추가하여 :

    UPDATE TableB  
    SET TableB.value = (  
    SELECT TableA.value  
        FROM TableA  
        WHERE TableA.name = TableB.name  
    )  
    **where TableB.id < X**  
    ;
    
  5. ==============================

    5.

        UPDATE    cities c,
              city_langs cl
        SET       c.fakename = cl.name
       WHERE     c.id = cl.city_id
    
  6. ==============================

    6.임시 테이블에 데이터를 저장

    임시 테이블에 데이터를 저장

    Select * into tempTable from table1
    

    이제 열을 업데이트

     UPDATE table1
        SET table1.FileName = (select FileName from tempTable where tempTable.id = table1.ID);
    
  7. ==============================

    7.내 경우, 허용 솔루션은 너무 느렸다. 180K 행이 테이블에 대한 업데이트 속도는 초당 10 행에 대해이었다. 이 조인 요소의 인덱스입니다.

    내 경우, 허용 솔루션은 너무 느렸다. 180K 행이 테이블에 대한 업데이트 속도는 초당 10 행에 대해이었다. 이 조인 요소의 인덱스입니다.

    드디어 프로 시저를 사용하여 내 문제를 해결 :

    CREATE DEFINER=`my_procedure`@`%` PROCEDURE `rescue`()
    BEGIN
        declare str VARCHAR(255) default '';
        DECLARE n INT DEFAULT 0;
        DECLARE i INT DEFAULT 0;
        DECLARE cur_name VARCHAR(45) DEFAULT '';
        DECLARE cur_value VARCHAR(10000) DEFAULT '';
        SELECT COUNT(*) FROM tableA INTO n;
        SET i=0;
        WHILE i<n DO 
          SELECT namea,valuea FROM tableA limit i,1 INTO cur_name,cur_value;
          UPDATE tableB SET nameb=cur_name where valueb=cur_value;
          SET i = i + 1;
        END WHILE;
    
    END
    

    나는 그것이 나에게 도움 것처럼 미래에 누군가가 도움이되기를 바랍니다

  8. ==============================

    8.당신은 두 테이블의 공통 필드가 있다면 그렇게 쉽게! ...

    당신은 두 테이블의 공통 필드가 있다면 그렇게 쉽게! ...

    표-1 업데이트 할 = 테이블. 표-2 = 테이블 어디를 테이크 데이터에서.

    $qry_asseet_list = mysql_query("SELECT 'primary key field' FROM `table-1`");
    
    $resultArray = array();
    while ($row = mysql_fetch_array($qry_asseet_list)) {
    $resultArray[] = $row;
    }
    
    
    
    foreach($resultArray as $rec) {
    
        $a = $rec['primary key field'];
    
        $cuttable_qry = mysql_query("SELECT * FROM `Table-2` WHERE `key field name` = $a");
    
        $cuttable = mysql_fetch_assoc($cuttable_qry);
    
    
    
        echo $x= $cuttable['Table-2 field']; echo " ! ";
        echo $y= $cuttable['Table-2 field'];echo " ! ";
        echo $z= $cuttable['Table-2 field'];echo " ! ";
    
    
        $k = mysql_query("UPDATE `Table-1` SET `summary_style` = '$x', `summary_color` = '$y', `summary_customer` = '$z' WHERE `summary_laysheet_number` = $a;");
    
        if ($k) {
            echo "done";
        } else {
            echo mysql_error();
        }
    
    
    }
    
  9. from https://stackoverflow.com/questions/11709043/mysql-update-column-with-value-from-another-table by cc-by-sa and MIT license