我正在尝试使用SQL Join连接到表。 1号桌
event_id | emp_id | event_date |
00000001 | 000002 | 2019-05-31 |
表2
emp_id | emp_name |
000001 | a
000002 | b
我的代码是这样的
"Select table2.emp_id,table2.emp_name from table2 left join table1
on tabl2.emp_id = table1.emp_id where event_date <> '2019-05-31'"
我的愿望输出是这样的:
emp_id | emp_name
000001 | a
但是它给了我空白的结果。
答案 0 :(得分:0)
您可以将条件event_date <> '2019-05-31'
与WHERE
一起使用,而不用将其放在AND
中,这样您将获得预期的结果:
Select table2.emp_id,table2.emp_name
from table2
left join table1 on tabl2.emp_id = table1.emp_id AND event_date <> '2019-05-31'
如果要在WHERE子句上添加条件,它将从两个表中进行过滤,因此LEFT JOIN将不会返回您的预期结果
答案 1 :(得分:0)
必须将case event_date is null
添加到where子句:
select table2.emp_id, table2.emp_name
from table2 left join table1
on table2.emp_id = table1.emp_id
where table1.event_date is null or table1.event_date <> '2019-05-31'
因为您使用的是left join
。
请参见demo。
结果:
| emp_id | emp_name |
| ------ | -------- |
| 000001 | a |
答案 2 :(得分:0)
左表中是否有emp_id 000001?如果没有,那么您将看不到它,因为您是专门从左侧表(使用左侧联接)中提取结果
尝试并删除单词“ left”:
Select table2.emp_id,table2.emp_name from table2
join table1
on tabl2.emp_id = table1.emp_id
where event_date <> '2019-05-31'