> 데이터 베이스 > MySQL 튜토리얼 > CASE가 포함된 MySQL 업데이트: 모든 행을 업데이트하는 이유와 해결 방법은 무엇입니까?

CASE가 포함된 MySQL 업데이트: 모든 행을 업데이트하는 이유와 해결 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-01 07:52:14
원래의
289명이 탐색했습니다.

MySQL UPDATE with CASE: Why Does it Update All Rows and How to Fix It?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿