다른 테이블의 값을 포함하는 mysql update 컬럼
테이블이 두 개 있어요 둘 다
id name value
===================
1 Joe 22
2 Derk 30
값을 복사해야 합니다.value
부터tableA
로.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'
2개의 테이블을 결합해야 합니다.
예를 들어 값을 복사하는 경우name
테이블 A에서 로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
);
UPDATE cities c,
city_langs cl
SET c.fakename = cl.name
WHERE c.id = cl.city_id
두 번째 옵션은 안전 업데이트 모드를 사용하는 경우(그리고 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);
내 경우, 수용된 해결 방법이 너무 느렸다.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
앞으로 누군가에게 도움이 됐으면 좋겠다.
양쪽 테이블에 공통 필드가 있으면 매우 간단합니다.
표 1 = 업데이트할 표.표-2 = 데이터를 가져올 표입니다.
- 표 1에서 쿼리를 작성하고 공통 필드 값을 찾습니다.
- 루프를 만들고 표 1 값에 따라 표 2의 모든 데이터를 찾습니다.
- 다시 표 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
'programing' 카테고리의 다른 글
MariaDB 구문에 대한 SQL 구문 확인 (0) | 2022.09.21 |
---|---|
상위 폴더에서 모듈 가져오기 (0) | 2022.09.19 |
JavaScript 함수를 매개 변수로 전달합니다. (0) | 2022.09.19 |
Python에서 Requests 라이브러리를 사용하여 "사용자-에이전트" 전송 (0) | 2022.09.19 |
Maria와의 JDBC 페일오버/하이 어베이러빌리티에 대한 설명DB (0) | 2022.09.19 |