>데이터 베이스 >MySQL 튜토리얼 >CASE 문을 사용하여 MySQL 항목을 새 값으로 효율적으로 업데이트하려면 어떻게 해야 합니까?

CASE 문을 사용하여 MySQL 항목을 새 값으로 효율적으로 업데이트하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-11 07:55:03617검색

How can I efficiently update MySQL entries with new values using the CASE statement?

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.