【发布时间】:2015-12-05 01:58:36
【问题描述】:
我有两个可以使用一个字段连接的表:
Table_1:
emp_id emp_name department
------ -------- ----------
1 Adam Accounting
2 Peter Engineering
3 Bruce Engineering
Table_2:
emp_id emp_salary
------ ----------
1 1000
3 3500
5 2000
我想选择表 2 中连接两个表时未出现的行(在本例中为 emp_id=5)。我一直在尝试以下语句,但我得到 0 行:
select * from table_2
where not exists
(
select * from table_1, table_2
where table_1.emp_id = table_2.emp_id);
【问题讨论】:
-
这两个语句之间没有关联;只要两个表中都有一个 ID,您的 EXISTS 子句将始终返回一些内容……换句话说,它始终为真,您需要将
table_2链接到您的 EXISTS 子句。这应该可以帮助您看到您只想要table_2中不存在于table_1中的 ID 列表,这是一个更简单的命题。 -
你应该改用内部连接
-
这是一个内部连接@sra1。