문제
단일 SQL 쿼리를 사용하여 각 행마다 다른 값으로 여러 행을 업데이트하는 방법이 있습니까? 다른 데이터로 많은 행으로 하나의 Colum을 업데이트해야합니다. 각 행에 개별 업데이트 쿼리를 사용하는 것은 과도한 것처럼 보이 므로이 프로세스를 단일 SQL 문으로 통합하거나 최소한 필요한 쿼리 수를 줄이려고합니다.
Zend Framework 및 MySQL과 함께 PHP를 사용하고 있습니다.
해결책
임시 테이블을 만들고 다음과 같이 채우십시오.
CREATE TEMPORARY TABLE temptable (id INTEGER, VALUE VARCHAR(200))
INSERT
INTO temptable
VALUES
('1', 'val1'),
('2', 'val2'),
('3', 'val3'),
('4', 'val4')
그런 다음 발행 :
UPDATE
mytable m, temptable t
SET m.value = t.value
WHERE m.id = t.id
다른 팁
MySQL에 대해 구체적으로 알지 못하지만 선택 또는 여러 선택을 기반으로 여러 행을 업데이트하려면 여러 행을 업데이트하려면
UPDATE U
SET MyColumn = T.OtherColumn
FROM MyUpdateTable AS U
JOIN
(
SELECT [OtherColumn] = OtherColumn1
FROM MyOtherTable1
WHERE ...
UNION
SELECT OtherColumn2
FROM MyOtherTable2
WHERE ...
) AS T
ON T.ID = U.ID
2014 년 10 월 28 일 업데이트, MySQL 작업으로 변환되었습니다.
UPDATE MyUpdateTable AS U
JOIN
(
SELECT [OtherColumn] = OtherColumn1
FROM MyOtherTable1
WHERE ...
UNION
SELECT OtherColumn2
FROM MyOtherTable2
WHERE ...
) AS T
ON T.ID = U.ID
SET MyColumn = T.OtherColumn
이것이 SQL Server에서 작동한다는 것을 알고 있으므로 MySQL에서 시도해 볼 가치가 있습니다.
update xtable
set a =
Case
when a = "a"
then z
when a = "b"
then y
End
where ...
다른 행을 기반으로 CASE 문을 구성 할 수 있습니다.
제휴하지 않습니다 StackOverflow