내가 찾고있는 것은 레코드를 삽입 한 다음 더 이상 사용하지 않으므로 동일한 ID를 가진 이전 레코드를 비활성화하는 것입니다. 그러나 가능한 가장 간단한 방법으로이 작업을 수행하려고합니다. 레코드 삭제는 실제로 옵션이 아닙니다.Mysql : UPDATE 쿼리에 대한 두 조건에서 int 필드 값 전환
작업시도 순서 : 활성 사용중 값
- 삽입
inUse = 1
- 더 이상 사용하지 않는 것과 동일한 ID에 대한 다음과 같은 기록을 업데이트 :
inUse = 0
내 첫번째 생각이었다 이 쿼리를 실행하려면
UPDATE page_tags SET inUse = IF(inUse = 1, 0, 1) WHERE page_id = 23678459 AND tag_id NOT IN (10, 4);
이 쿼리의 유일한 문제는 다시 실행하면 비활성화 된 모든 값을 다시 1로 전환한다는 것입니다. 특정 ID가 WHERE에 의해 타겟팅 된 경우에만 되돌릴 수있는 모든 태그가 필요합니다. 성명서.
당신은 첫 번째 쿼리 0에 inUse''무조건'update'을 할 수 'inUse = 1'을 사용하여'insert '하십시오. 이런 식으로하지 않는 이유가 있습니까? – ManieQ
@ManieQ 나는 그것에 대해 생각했다. 그러나 태그가 이미 존재한다면 새로운 태그를 추가하지 않을 것이므로 기존의 태그를 사용하기 때문에 어떤 방식 으로든보고 싶다고 생각할 것이다. 그래서 그 태그를 비활성화시키지 않거나 다시 활성화시켜야합니다 ... – stwhite