2013-04-17 62 views
1

以下是我的僱員表:如何從嵌套查詢的結果中排除名稱?

create table EMPLOYEES 
(EmpID char(4)   unique Not null, 
Ename varchar(10), 
Job  varchar(9), 
MGR  char(4), 
Hiredate date, 
Salary decimal(7,2), 
Comm  decimal(7,2), 
DeptNo char(2)   not null, 
    Primary key(EmpID), 
    Foreign key(DeptNo) REFERENCES DEPARTMENTS(DeptNo)); 


insert into EMPLOYEES values (7839,'King','President',null,'17-Nov-11',5000,null,10); 
insert into EMPLOYEES values (7698,'Blake','Manager',7839,'01-May-11',2850,null,30); 
insert into EMPLOYEES values (7782,'Clark','Manager',7839,'02-Jun-11',2450,null,10); 
insert into EMPLOYEES values (7566,'Jones','Manager',7839,'02-Apr-11',2975,null,20); 
insert into EMPLOYEES values (7654,'Martin','Salesman',7698,'28-Feb-12',1250,1400,30); 
insert into EMPLOYEES values (7499,'Allen','Salesman',7698,'20-Feb-11',1600,300,30); 
insert into EMPLOYEES values (7844,'Turner','Salesman',7698,'08-Sep-11',1500,0,30); 
insert into EMPLOYEES values (7900,'James','Clerk',7698,'22-Feb-12',950,null,30); 
insert into EMPLOYEES values (7521,'Ward','Salesman',7698,'22-Feb-12',1250,500,30); 
insert into EMPLOYEES values (7902,'Ford','Analyst',7566,'03-Dec-11',3000,null,20); 
insert into EMPLOYEES values (7369,'Smith','Clerk',7902,'17-Dec-10',800,null,20); 
insert into EMPLOYEES values (7788,'Scott','Analyst',7566,'09-Dec-12',3000,null,20); 
insert into EMPLOYEES values (7876,'Adams','Clerk',7788,'12-Jan-10',1100,null,20); 
insert into EMPLOYEES values (7934,'Miller','Clerk',7782,'23-Jan-12',1300,null,10); 

以下是部門表:

create table DEPARTMENTS 
    (DeptNo char(2) unique Not null, 
    DName varchar(14), 
    Location varchar(13), 
     Primary key(DeptNo)); 


insert into DEPARTMENTS values (10,'Accounting','New York'); 
insert into DEPARTMENTS values (20,'Research','Dallas'); 
insert into DEPARTMENTS Values (30,'Sales','Chicago'); 
insert into DEPARTMENTS values (40,'Operations','Boston'); 

以下是我的查詢:

select ename, salary 
from EMPLOYEES 
where DeptNo in 
(select DeptNo 
from EMPLOYEES 
where Ename ='blake'); 

如何排除 '布萊克'從我的結果?我被告知在子查詢中使用NOT IN,但它不起作用。

回答

1
select ename, salary 
from EMPLOYEES 
where DeptNo in 
(select DeptNo 
from EMPLOYEES 
where Ename ='blake') and Ename <>'blake'; 

您也可以使用not in作爲第二個查詢。

SQLFIDDLE DEMO

+0

這些都沒有給我正確的結果。在其中的<>的聲明給我每個人,但布萊克,但在每個部門。 '不在'的陳述也沒有給我正確的結果。我應該使用GROUP BY語句嗎? –

+0

等一下,我正在採取這個在sqlfiddle,然後我們會看看它。 – Freelancer

+0

@JeffOrris也粘貼部門表,其中deptno是外鍵 – Freelancer