这是我的桌子:
INSERT INTO Emp (EmpNo, EName, Job, Mgr, HireDate, Sal, Comm, DeptNo)
VALUES (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, NULL, 20),
(7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30),
(7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30),
(7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, NULL, 20),
(7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30),
(7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, NULL, 30),
(7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, NULL, 10),
(7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000, NULL, 20),
(7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000, NULL, 10),
(7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500, 0, 30),
(7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100, NULL, 20),
(7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950,NULL, 30),
(7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, NULL, 20),
(7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, NULL, 10);
现在,我想让每个工作不是总统或经理的工人。
这是我的命令:
SELECT *
FROM [dbo].EMP
WHERE NOT Job = 'MANAGER' OR Job = 'PRESIDENT';
结果几乎是正确的,但是我得到了一个不应该在场的总统。
这个:
7839 KING PRESIDENT NULL 1981-11-17 5000.00 NULL 10
答案 0 :(得分:5)
您需要用方括号将其包裹起来:
SELECT * FROM [dbo].EMP WHERE NOT (Job='MANAGER' OR Job='PRESIDENT');
或使用NOT IN
:
SELECT * FROM [dbo].EMP WHERE Job NOT IN ('MANAGER', 'PRESIDENT');
答案 1 :(得分:0)
使用NOT IN
SELECT * FROM [dbo].EMP WHERE Job NOT in ('MANAGER' ,'PRESIDENT')