2

我正在使用 Oracle 10g,并且正在尝试使用集合运算符从一个表中选择未出现在查询中的另一个表中的行。

我正在尝试从表中选择这些行未出现在表中的表中的id,last_namefirst_name列。employeejob_history

这两个表中唯一的共同列是id列。但我也想显示名称。

我努力了:

SELECT 
    id, last_name, first_name 
FROM 
    employees

MINUS

SELECT 
    id, TO_CHAR(null), TO_CHAR(null) 
FROM 
    job_history;

这不会产生预期的结果。

但是,如果我不想显示员工表中的名称,我使用:

SELECT id FROM employees
MINUS
SELECT id FROM job_history;

这给了我一半的结果,除了我想要员工表中的名字。

有什么建议吗?

4

2 回答 2

4

为什么你不能NOT IN像这样使用

SELECT id, last_name, first_name FROM employees
WHERE ID NOT IN (SELECT id FROM job_history);

LEFT JOIN你也可以试试

SELECT e.id, e.last_name, e.first_name 
FROM employees e LEFT JOIN job_history jh
ON e.ID = jh.ID
WHERE jh.some_other_column IS NULL;
于 2016-08-01T20:18:55.863 回答
2

您可以在选择结果上使用内部联接

select a.id,   a.last_name, a.first_name
from employees a 
inner join ( 
SELECT id FROM employees
MINUS
SELECT id FROM job_history ) x on x.id = a.id
于 2016-08-01T20:19:47.493 回答