두 개의 열 1,2가 포함 된 tableA라는 테이블이 있습니다. 배열의 내용에 따라 값 1을 제거하려고합니다. 그 값이 두 번 존재하면 col1을 col1 = col1 - 2
으로 설정하고 싶습니다.UPDATE WHERE IN() mysql
WHERE IN()
이 배열의 중복 값을 무시하지 않으면 나는 UPDATE tableA SET col1 = col1 - 1 WHERE col2 IN (?); .. [arr]
을 사용할 수 있습니다.
이 키는 기본 키 또는 고유 키가 아니며 중복 값에는 문제가 없음을 유의하십시오. 다음은 X를 수정해야하는 쿼리입니다.
UPDATE tableA SET col1 = col1 - X WHERE col2 IN (?); .. [arr]
나는 내가 편곡에 대한 루프를 할 수 알고 같은 간단한 쿼리를 실행합니다 UPDATE tableA SET col1 = col1 - 1 WHERE col2 = ? ; .. [arr[i]]
때마다하지만 더 나은 방법을 찾기 위해 노력하고 -가있는 경우.
내가이 줄을 이해하는 문제의 비트'아이디 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION 그대로 하나를 선택 ALL SELECT 2)', 조금 설명해 주시겠습니까? –
@JohnJames 포인트가'IN (1,2,3)'=>'대신에 (SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 3') 최종 쿼리에서 당신은'IN'을 전혀 사용하지 않습니다 – lad2025
오, 알았어, 고마워. 불행히도 'FROM IN (?)', ... [arr] 여기서 arr = [1,1,2]; –