MySQL : 조건이 충족되는 경우에만 필드 업데이트
특정 조건이 충족되는 경우에만 필드 값을 업데이트하는 MySQL에서 UPDATE 쿼리를 수행 할 수 있습니까? 이 같은:
UPDATE test
SET
CASE
WHEN true
THEN field = 1
END
WHERE id = 123
다시 말해:
UPDATE test
SET
something = 1, /*field that always gets updated*/
CASE
WHEN true
THEN field = 1 /*field that should only get updated when condition is met*/
END
WHERE id = 123
이를 수행하는 올바른 방법은 무엇입니까?
예!
여기에 또 다른 예가 있습니다.
UPDATE prices
SET final_price= CASE
WHEN currency=1 THEN 0.81*final_price
ELSE final_price
END
이것은 문서에서 언급했듯이 변경 사항이 없으면 MySQL이 행을 업데이트하지 않기 때문에 작동합니다 .
열을 현재 가지고있는 값으로 설정하면 MySQL은이를 인식하고 업데이트하지 않습니다.
제 생각에 더 읽기 쉬운 또 다른 해결책은 다음과 같습니다.
UPDATE test SET something = 1, field = IF(condition is true, 1, field) WHERE id = 123
이것이하는 일은 조건이 충족되면 'field'를 1 (예로 사용 된 OP처럼)로 설정하고 충족되지 않으면 'field'의 현재 값을 사용합니다. 이전 값을 사용하는 것은 변경하지 않는 것과 동일하므로 완료됩니다.
이 시도:
UPDATE test
SET
field = 1
WHERE id = 123 and condition
MySQL IF()
조건부 함수를 사용할 수있는 또 다른 솔루션 :
UPDATE test
SET field = IF(something == 1{CONDITION}, 1 {NEW VALUE}, field)
WHERE `id` = 5
또 다른 변형 :
UPDATE test
SET field = IF ( {condition}, {new value}, field )
WHERE id = 123
이것은 업데이트됩니다 field
와 {new value}
경우에만 {condition}
충족
AND 조건으로 솔루션을 찾았습니다. $trainstrength = "UPDATE user_character SET strength_trains = strength_trains + 1, trained_strength = trained_strength +1, character_gold = character_gold - $gold_to_next_strength WHERE ID = $currentUser AND character_gold > $gold_to_next_strength";
참조 URL : https://stackoverflow.com/questions/14893355/mysql-update-a-field-only-if-condition-is-met
'programing' 카테고리의 다른 글
자바 : String []을 List 또는 Set으로 변환하는 방법 (0) | 2020.12.27 |
---|---|
정적 필드는 내부적으로 정확히 어떻게 작동합니까? (0) | 2020.12.27 |
ADB 드라이버 및 Windows 8.1 (0) | 2020.12.27 |
JavaScript에서 배열의 모든 요소를 정수로 변환하는 방법은 무엇입니까? (0) | 2020.12.26 |
ListActivity에 대한 AbsListView.obtainView의 ListView에서 충돌이 발생합니다. (0) | 2020.12.26 |