다른 테이블의 값이있는 mysql 업데이트 열
나는 두 개의 테이블이 있습니다.
id  name  value
===================
1   Joe     22
2   Derk    30
 
각 테이블의 확인 이름 을 기준으로 valuefrom에서 tableAto 값을 복사해야 tableB합니다.
이 UPDATE진술에 대한 팁이 있습니까?
이 답변 외에도 tableA.value에 따라 tableB.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'
두 테이블을 결합해야합니다.
예를 들어 nametableA 의 값을 tableB동일한 위치 로 복사하려고합니다.ID
UPDATE tableB t1 
        INNER JOIN tableA t2 
             ON t1.id = t2.id
SET t1.name = t2.name 
WHERE t2.name = 'Joe'
 
업데이트 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
두 번째 가능성은
UPDATE TableB 
SET TableB.value = (
    SELECT TableA.value 
    FROM TableA
    WHERE TableA.name = TableB.name
);
안전 업데이트 모드를 사용하고 (KEY 열을 사용하는 WHERE없이 테이블을 업데이트하려고했음을 나타내는 오류가 발생하는 경우) 두 번째 옵션은 다음을 추가하여 실행할 수도 있습니다.
UPDATE TableB  
SET TableB.value = (  
SELECT TableA.value  
    FROM TableA  
    WHERE TableA.name = TableB.name  
)  
**where TableB.id < X**  
;
임시 테이블에 데이터 저장
Select * into tempTable from table1
 
이제 열을 업데이트하십시오.
 UPDATE table1
    SET table1.FileName = (select FileName from tempTable where tempTable.id = table1.ID);
In my case, the accepted solution was just too slow. For a table with 180K rows the rate of updates was about 10 rows per second. This is with the indexes on the join elements.
I finally resolved my issue using a procedure:
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
 
I hope it will help someone in the future like it helped me
    UPDATE    cities c,
          city_langs cl
    SET       c.fakename = cl.name
   WHERE     c.id = cl.city_id
If you have common field in both table then it's so easy !....
Table-1 = table where you want to update. Table-2 = table where you from take data.
- make query in Table-1 and find common field value.
 - make a loop and find all data from Table-2 according to table 1 value.
 - again make update query in table 1.
 
$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();
    }
}
참고URL : https://stackoverflow.com/questions/11709043/mysql-update-column-with-value-from-another-table
'Programming' 카테고리의 다른 글
| ActiveRecord / Rails로 NOT IN 쿼리를 표현하는 방법? (0) | 2020.05.10 | 
|---|---|
| Java 컴파일러 레벨이 설치된 Java 프로젝트 패싯 버전과 일치하지 않습니다. (0) | 2020.05.10 | 
| Express에서 여러 파일에 라우트 핸들러를 포함시키는 방법은 무엇입니까? (0) | 2020.05.10 | 
| 두 개의 하위 문자열 사이에서 문자열 찾기 (0) | 2020.05.10 | 
| MacOS Xcode CoreSimulator 폴더가 매우 큽니다. (0) | 2020.05.10 |