2013-03-31 3 views
4

사용자 "1"과 "2"를 제외하고 mysql.user 에서 모든 사용자를 삭제하려고합니다.MYSQL에서 2 개의 특정 항목을 제외한 모든 항목을 삭제하는 방법

이 명령을 실행했지만 사용자 "1"과 "2"도 삭제했습니다.

mysql> delete from mysql.user where user!='1' or user!='2'; 

는 또한, 동일한 결과를 사용자가 '1'과 '2'가 삭제되고
mysql> delete from mysql.user where (user!='1' or user!='2'); 

시도. 포함되어 모두가 간단한 이유

+0

'AND '가 아닐까요? –

+0

"AND"는 같은 행에 대해 여러 조건이 있다고 생각합니다. –

+0

및 작동 - 아래 내 대답을 참조하십시오 ... – sgeddes

답변

7

NOT IN를 사용하여 작동합니다 : 귀하의 요청에

DELETE FROM mysql.user where user NOT IN (1,2) 

문제는 OR입니다 - 1 반대 2와 동일하지 않고 있기 때문에 다른 사람을 제거하고 있습니다.

AND와 함께 일하는 것이 귀하의 질의 :

delete from mysql.user where (user!='1' AND user!='2'); 

SQL Fiddle Demo

대 :

SQL Fiddle Demo with Or

+0

감사합니다. 로직과 더 많은 인라인을 사용한다는 점을 감안할 때 'AND'로갑니다. –

3

당신은 NOT IN

DELETE FROM mysql.user WHERE user NOT IN (1, 2) 

이유를 사용할 수 있습니다. 1 <> 22 <> 1.

+0

코드가 "더 크거나"더 작게 보이지 않습니다. –

+0

@SumerKolcak'<>'은 "같지 않음"을 의미합니다. –

+0

'<>'은 '같지 않음'을 의미하지는 않지만, '보다 큽니다' 및 '보다 작음'기호가 포함됩니다. 나는 세계가 발전했다고 생각한다. –

1

경우 사용자가 아닌에서 ('1', 'mysql 데이터베이스에서 user에서 삭제 2 ')

+0

놀랍지 만,이 코드도 잘 작동하지만 코드는 실제로 이해가 필요하기 때문에'AND'를 선호합니다. 나는 그것이 정말로 논리적 인 'OR'이어야한다고 생각했다. –

관련 문제