CASE를 사용한 MySQL 업데이트: 예기치 않은 동작 및 해결 방법
MySQL UPDATE 쿼리에서 CASE 문을 활용할 때 해당 내용이 다음에 미치는 영향을 이해하는 것이 중요합니다. 데이터. 제공된 예에서 원래 쿼리는 ID 필드를 기반으로 특정 행을 업데이트하려고 했습니다. 그런데 쿼리가 예기치 않게 2,500만 행을 모두 업데이트하여 NULL 값이 발생했습니다.
이러한 동작은 CASE 문의 특성에서 비롯됩니다. ELSE 절이 없으면 MySQL은 누락된 조건을 NULL과 동일하게 해석합니다. 따라서 지정된 ID 값과 일치하지 않는 모든 행은 uid 열에 대해 NULL로 업데이트되었습니다.
이 문제를 해결하고 다른 데이터를 유지하면서 특정 행을 선택적으로 업데이트하려면 ELSE 절을 사용하여 기본값을 제공하는 것이 좋습니다. 가치를 유지하거나 기존 가치를 유지합니다. 또한 WHERE 절을 사용하여 업데이트해야 하는 행을 지정합니다.
예를 들어 다음 수정된 쿼리는 이러한 문제를 해결합니다.
UPDATE `table` SET `uid` = CASE WHEN id = 1 THEN 2952 WHEN id = 2 THEN 4925 WHEN id = 3 THEN 1592 ELSE `uid` END WHERE id in (1,2,3)
이 쿼리는 이제 ID 값이 있는 행만 업데이트합니다. 1, 2, 3 중 나머지 행은 영향을 받지 않은 채로 둡니다. CASE 문을 ELSE 절 및 WHERE 절과 결합하면 테이블의 다른 데이터를 실수로 수정하지 않고도 특정 행을 효율적으로 업데이트할 수 있습니다.
위 내용은 CASE가 포함된 MySQL 업데이트: 모든 행을 업데이트하는 이유와 해결 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!