SQL查询用户在表中有一条记录但没有另一条[关闭]

Posted

技术标签:

【中文标题】SQL查询用户在表中有一条记录但没有另一条[关闭]【英文标题】:SQL Query User has one record in the table but not another one [closed] 【发布时间】: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 中的用户列表和不在的用户列表

【问题讨论】:

【参考方案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 比较。 列出了所有没有病假银行代码的员工。谢谢

以上是关于SQL查询用户在表中有一条记录但没有另一条[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何获取SQL表中的下一条记录

VBA Access SQL SELECT查询只返回一条记录

在表中管理Json

如何用sql语句查询:在一个表中存在而另一个表中不存在的第一条记录?

在C#中使用SQL语句查询数据在表中是不是存在输出是或否

在表中动态记录 PLSql 语句