我正在尝试使用SQL连接连接到表。表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
但它给我空白的结果。
你必须在case子句中添加event_date is null
:
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 |
而不是将条件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不会返回您的预期结果
左表是emp_id 000001吗?如果没有那么你将不会看到它,因为你是专门从左表中拉出结果(左连接)
尝试删除“左”这个词:
Select table2.emp_id,table2.emp_name from table2
join table1
on tabl2.emp_id = table1.emp_id
where event_date <> '2019-05-31'