我正在尝试加入表格,但可以获得预期的结果

问题描述 投票:0回答:3

我正在尝试使用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

但它给我空白的结果。

mysql
3个回答
0
投票

你必须在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        |

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不会返回您的预期结果


0
投票

左表是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'
© www.soinside.com 2019 - 2024. All rights reserved.