CASE를 사용하여 새 값에 대한 MySQL 항목 업데이트
이 문서에서는 MySQL 데이터베이스의 ID를 기반으로 정가를 대량 업데이트하는 문제에 대해 설명합니다. . 이 작업을 시도할 때 흔히 발생하는 문제는 CASE 문을 사용하는 것인데, 이를 잘못 사용하면 예상치 못한 결과가 발생할 수 있습니다.
질문에 제공된 쿼리에는 근본적인 결함이 있습니다. CASE 문을 사용하여 Price 열을 설정하지만 WHEN 절에 포함되지 않은 ID가 있는 레코드의 값을 명시적으로 지정하지 않습니다. 결과적으로 해당 레코드는 NULL 값으로 업데이트됩니다.
이 문제를 해결하려면 올바른 쿼리 구조가 다음과 유사해야 합니다.
UPDATE ae44 SET price = CASE WHEN ID = 'AT259793380' THEN '500' WHEN ID = 'AT271729590' THEN '600' WHEN ID = 'AT275981020' THEN '700' END
그러나 이 쿼리에는 여전히 단점이 있습니다. NULL 값을 사용하여 WHEN 절에 나열되지 않은 ID가 있는 레코드를 업데이트합니다. 업데이트를 지정된 ID로만 제한하려면 보다 선택적인 접근 방식이 필요합니다.
UPDATE ae44 JOIN ( SELECT 'AT259793380' AS oldval, '500' AS newval UNION ALL SELECT 'AT271729590' AS oldval, '600' AS newval UNION ALL SELECT 'AT275981020' AS oldval, '700' AS newval ) q ON ae44.id = q.oldval SET price = q.newval
이 쿼리는 하위 쿼리를 활용하여 지정된 이전 값과 새 값으로 임시 테이블을 생성합니다. 그런 다음 JOIN을 사용하여 ae44 테이블의 레코드를 ID를 기반으로 하위 쿼리의 레코드와 일치시킵니다. 일치하는 ID가 있는 레코드만 가격이 해당 새 값으로 업데이트되고 다른 모든 레코드는 변경되지 않습니다.
위 내용은 CASE 문을 사용하여 MySQL 항목을 새 값으로 효율적으로 업데이트하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!