반응형
하나의 쿼리로 mysql 데이터를 일괄 업데이트하려면 어떻게 해야 합니까?
$query = mysql_query("UPDATE a SET fruit = '**apple**' WHERE id = '**1**' ");
$query2 = mysql_query("UPDATE a SET fruit = '**orange**' WHERE id = '**2**' ");
$query3 = mysql_query("UPDATE a SET fruit = '**peach**' WHERE id = '**3**' ");
하나의 질문으로 단순화할 수 있는 방법이 있습니까?
다음과 같은 해결책을 찾았습니다.
INSERT into `table` (id,fruit)
VALUES (1,'apple'), (2,'orange'), (3,'peach')
ON DUPLICATE KEY UPDATE fruit = VALUES(fruit);
ID는 고유 키 또는 기본 키여야 합니다.하지만 퍼포먼스에 대해서는 모른다.
예, 다음 쿼리를 사용하여 수행할 수 있습니다.
UPDATE a
SET fruit = (CASE id WHEN 1 THEN 'apple'
WHEN 2 THEN 'orange'
WHEN 3 THEN 'peach'
END)
WHERE id IN(1,2 ,3);
MySQL의 IF() 함수를 사용하면 다음과 같이 할 수 있습니다.
UPDATE a
SET fruit = IF (id = 1, 'apple', IF (id = 2, 'orange', IF (id = 3, 'peach', fruit)));
경고 메시지를 기반으로 합니다.
'VALUES function' is deprecated and will be removed in a future release. Please use an alias (INSERT INTO ... VALUES (...) AS alias) and replace VALUES(col) in the ON DUPLICATE KEY UPDATE clause with alias.col instead
야로슬라브의 솔루션을 다음과 같이 약간 수정하는 것을 고려할 수 있다.
INSERT into `table` (id,fruit)
VALUES (1,'apple'), (2,'orange'), (3,'peach') as tb
ON DUPLICATE KEY UPDATE fruit = tb.fruit;
동일한 작업을 수행하지만 경고 메시지를 음소거합니다.
언급URL : https://stackoverflow.com/questions/11664684/how-to-bulk-update-mysql-data-with-one-query
반응형
'programing' 카테고리의 다른 글
두 날짜의 차이를 시간으로 반올림하는 방법 (0) | 2022.09.05 |
---|---|
SQL Chemy 기본 Date Time (0) | 2022.09.05 |
__init__ 내의 클래스 함수를 호출합니다. (0) | 2022.09.05 |
java.io을 입수하려면 어떻게 해야 하나요?java.lang의 InputStream.스트링? (0) | 2022.09.05 |
urlib 및 python을 통한 사진 다운로드 (0) | 2022.09.05 |