반응형
MySQL의 조건부 업데이트
전 그러려고 합니다.UPDATE
테이블의 값을 입력합니다. 하지만 조건을 추가해야 합니다.그 기능을 찾았습니다.CASE
, 하지만 그게 최선의 방법이라면 그렇지 않습니다.
여기 예가 있습니다.제 테이블은 'relation'입니다.
userid1 | userid2 | name1 | name2
예를 들면 다음과 같습니다.
SELECT *
FROM relation
WHERE (userid1 = 3 AND userid2 = 4)
OR (userid1 = 4 AND userid2 = 3);
출력:
4 | 3 | 지폐 | 잭
그리고 3과 4의 관계에서 사용자 3의 이름을 바꾸고 싶은데, 그것이 맞는지 모르겠습니다.userid1
아니면userid2
.
나는 다음과 같은 경우를 생각했습니다.
UPDATE relation
CASE WHEN userid1 = 3 THEN SET name1 = 'jack' END
WHEN userid2 = 3 THEN SET name2 = 'jack' END
WHERE (userid1 = 3 AND userid2 = 4)
OR (userid1 = 4 AND userid2 = 3);
하지만 작동이 안 돼요!무슨 생각 있어요?
미리 감사드립니다.
안타깝게도 최종적으로 무엇을 얻고 싶은지 확실하지는 않지만, 조건부를 올바르게 사용할 수 있는 방법은 다음과 같습니다.SET
당신의UPDATE
UPDATE relation
SET name1 = CASE WHEN userid1 = 3 THEN 'jack' ELSE name1 END,
name2 = CASE WHEN userid2 = 3 THEN 'jack' ELSE name2 END
WHERE (userid1 = 3 AND userid2 = 4)
OR (userid1 = 4 AND userid2 = 3);
SQL Fiddle 데모입니다.
이것에 조금 늦었다는 것은 알지만, MySQL의 IF() 기능을 사용하는 것이 더 읽기 쉬운 해결책이 될 것 같습니다.
UPDATE relation
SET name1 = IF(userid1 = 3, 'jack', name1),
name2 = IF(userid2 = 3, 'jack', name2)
WHERE (userid1 = 3 AND userid2 = 4)
OR (userid1 = 4 AND userid2 = 3);
IF 기능은 다음과 같이 사용됩니다.
IF(condition, value_if_true, value_if_false)
언급URL : https://stackoverflow.com/questions/17265522/conditional-update-in-mysql
반응형
'programing' 카테고리의 다른 글
리눅스 셸코드 "안녕, 세상이여!" (0) | 2023.10.10 |
---|---|
MySQL Workbench: 이 계정에 암호가 설정되지 않음 (0) | 2023.10.10 |
ng급과 ng급의 차이점은 무엇입니까? (0) | 2023.10.10 |
C의 스택 변수 자동 해제 (0) | 2023.10.10 |
adb 내 장치/폰을 찾지 못함(MacOS X) (0) | 2023.10.05 |