题目:1965.丢失信息的员工

文章介绍了如何通过SQL查询找出在Employees表中存在,但在Salaries表中没有相应工资信息的雇员。解题方法包括使用union操作符排除有工资信息的雇员,以及另一种使用unionall和分组聚合的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目来源:

        leetcode题目,网址:1965. 丢失信息的雇员 - 力扣(LeetCode)

解题思路:

       首先使用 union 找出所有雇员的编号,然后获得既有工资又有姓名的雇员编号的表 a,接着找出不在表 a 中的雇员编号,最后按要求输出。

解题代码:

# Write your MySQL query statement below
select a.employee_id
from (
    select employee_id from Employees
    union
    select employee_id from Salaries
) as a
where employee_id not in (
    select a.employee_id
    from Employees as a inner join Salaries as b on a.employee_id=b.employee_id
) 
order by a.employee_id


 

总结:

        写得有点蠢,应该有更好的写法。

        无官方题解。题解区有种写法是先使用 union all 获得所有雇员及相关信息,然后分组聚合后输出数据条数只有一条的雇员。

        union 和 union all 都可以合并结果集,但union 会自动去除结果集中的交集,而 union all 不会。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值