[SQL] 다른 테이블 값으로 갱신 MySQL의 열에
SQL다른 테이블 값으로 갱신 MySQL의 열에
난 둘처럼 보이는 두 개의 테이블이
id name value
===================
1 Joe 22
2 Derk 30
나는 각 테이블에서 검사 이름을 기반으로 TableB의에 TABLEA에서 값의 값을 복사해야합니다.
이 UPDATE 문에 대한 모든 팁?
해결법
-
==============================
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.당신은 두 개의 테이블에 가입해야합니다 :
당신은 두 개의 테이블에 가입해야합니다 :
예를 들어 당신은 그들이 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.두 번째 가능성은있다
두 번째 가능성은있다
UPDATE TableB SET TableB.value = ( SELECT TableA.value FROM TableA WHERE TableA.name = TableB.name );
-
==============================
4.당신이 안전 업데이트 모드를 사용하고 (그리고 당신이없이 테이블을 업데이트하려고했습니다 나타내는 오류를 얻고있는 곳 사용하는 KEY 열) 경우 두 번째 옵션은 가능도 추가하여 :
당신이 안전 업데이트 모드를 사용하고 (그리고 당신이없이 테이블을 업데이트하려고했습니다 나타내는 오류를 얻고있는 곳 사용하는 KEY 열) 경우 두 번째 옵션은 가능도 추가하여 :
UPDATE TableB SET TableB.value = ( SELECT TableA.value FROM TableA WHERE TableA.name = TableB.name ) **where TableB.id < X** ;
-
==============================
5.
UPDATE cities c, city_langs cl SET c.fakename = cl.name WHERE c.id = cl.city_id
-
==============================
6.임시 테이블에 데이터를 저장
임시 테이블에 데이터를 저장
Select * into tempTable from table1
이제 열을 업데이트
UPDATE table1 SET table1.FileName = (select FileName from tempTable where tempTable.id = table1.ID);
-
==============================
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.당신은 두 테이블의 공통 필드가 있다면 그렇게 쉽게! ...
당신은 두 테이블의 공통 필드가 있다면 그렇게 쉽게! ...
표-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(); } }
from https://stackoverflow.com/questions/11709043/mysql-update-column-with-value-from-another-table by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 빠른 게 뭔데, MySQL의에서 DISTINCT 또는 GROUP BY를 선택? (0) | 2020.03.19 |
---|---|
[SQL] 포스트 그레스 : 목록 테이블 외래 키에 SQL (0) | 2020.03.19 |
[SQL] 가입 및 UNION의 차이점은 무엇입니까? (0) | 2020.03.19 |
[SQL] 의 차이는 왼쪽 조인과 오른쪽 SQL 서버에 참여 (0) | 2020.03.19 |
[SQL] 부모와 자식 테이블에 데이터 삽입 - T-SQL (0) | 2020.03.19 |