where 절을 부정 할 수 있습니까?
예 :
DELETE * FROM table WHERE id != 2;
답변
이렇게 할 수 있습니다
DELETE FROM table WHERE id NOT IN ( 2 )
또는
DELETE FROM table WHERE id <> 2
@Frank Schmitt가 언급했듯이 NULL 값에 대해서도주의해야 할 수 있습니다. 2
NULL을 포함하여 그렇지 않은 모든 것을 삭제하려면 OR id IS NULL
WHERE 절에 추가하십시오 .
답변
귀하의 질문은 이미 다른 포스터에 의해 답변되었습니다.
delete from table where id <> 2
(또는 그 변형, id = 2 등이 아님)은 id가 NULL 인 행을 삭제하지 않습니다.
id = NULL 인 행도 삭제하려는 경우 :
delete from table where id <> 2 or id is NULL
답변
delete from table where id <> 2
편집 : MySQL의 구문을 수정하려면
답변
다음을 수행 할 수 있습니다.
DELETE * FROM table WHERE NOT(id = 2);
답변
<>
where 절을 부정하는 데 사용 합니다.
답변
형식 논리와 대수로 돌아갑니다. 같은 표현
A & B & (D | E)
두 가지 방법으로 부정 될 수 있습니다.
-
명백한 방법 :
!( A & B & ( D | E ) )
-
위의 내용을 다시 설명 할 수도 있습니다. 논리 표현식의 몇 가지 속성 만 기억하면됩니다.
!( A & B )
와 동일(!A | !B)
합니다.!( A | B )
와 동일(!A & !B)
합니다.!( !A )
(A)와 동일합니다.
적용되는 전체 표현식에 NOT (!)을 배포하여 연산자를 반전하고 진행하면서 이중 음수를 제거합니다.
!A | !B | ( !D & !E )
따라서 일반적으로 모든 where 절은 위의 규칙에 따라 부정 될 수 있습니다. 이것의 부정
select *
from foo
where test-1
and test-2
and ( test-3
OR test-4
)
이다
select *
from foo
where NOT( test-1
and test-2
and ( test-3
OR test-4
)
)
또는
select *
from foo
where not test-1
OR not test-2
OR ( not test-3
and not test-4
)
어떤게 더 좋아? 매우 상황에 맞는 질문입니다. 당신 만이 결정할 수 있습니다.
그러나 NOT을 사용하면 옵티마이 저가 할 수있는 작업과 할 수없는 작업에 영향을 미칠 수 있습니다. 최적이 아닌 쿼리 계획을 얻을 수 있습니다.
답변
WHERE id <> 2
잘 작동해야합니다 … 그게 당신이 추구하는 것입니까?