【问题标题】:SQL Query User has one record in the table but not another one [closed]SQL查询用户在表中有一条记录但没有另一条[关闭]
【发布时间】:2013-09-19 13:48:04
【问题描述】:

我有一个包含员工类型代码的表,我正在尝试返回所有没有特定 LeaveType 的用户

示例:

EmployeeNO LeaveType
---------------------    
1111       Personal
1111       Vacation
1111       Sick Bank
2222       Personal
2222       Vacation
3333       Personal
3333       Vacation

所以我想查询所有用户并返回Sick Bank 中的用户列表和不在的用户列表

【问题讨论】:

    标签: sql


    【解决方案1】:

    获得病假银行

    SELECT * FROM table1 WHERE leaveType = 'Sick Bank'
    

    获得非病假银行

    SELECT * FROM table1 WHERE leaveType <> 'Sick Bank'
    

    【讨论】:

    • 非 Sick Bank 查询将错误地返回用户 1111 两次,即使它有 Sick Bank 行。
    • 我想这张桌子有员工休假的日子,因此,尽管员工去过两次,但应该不止一次返回。
    • 但如果重点是只提取不同的行,他可以使用 SELECT DISTINCT
    【解决方案2】:

    让员工获得特定休假类型是困难的

    select employeeNO from table1 where leaveType = 'Sick Bank'
    

    如果员工有多个休假类型,则使用 的查询可能会为员工返回多行,即使他们确实有“病假银行”行。

    select employeeNO from table1 
    where employeeNo not in (select employeeNO from table1 where leaveType = 'Sick Bank')
    

    【讨论】:

    • 我假设这将是一个相对较大的表,因此使用 where Not in 将是,其中 N 是行数,(N * N) - N 比较。
    • 列出了所有没有病假银行代码的员工。谢谢
    猜你喜欢
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多