取至少有一条记录满足条件的员工

时间:2022-07-29 15:03:13
我有一个表,三列,A列是员工号,B列是一个日期,C列是数字,

一个员工有>=1的记录数,至少有一条记录是B=2999-12-31,C=1,这样的员工才是正常的,
如果将那些不满足这个条件的员工找出来,

想了半天,不得其法,

8 个解决方案

#1


伪代码如下:
select count(员工号),员工号 where B=2999-12-31 and C=1 group by 员工号 having count(员工号)>=1

#2


哦 上面是正常员工 那就再not in 子查询一下

#3


select *
from 一个表 t
where not exist (select 1 from 一个表 where 员工号=t.员工号 and B=2999-12-31 and C=1)

#4


谢谢,好像都是可以的,

就是有个问题,3楼的代码,子条件中select 1,是啥意思?

#5


exists()中是返回一个布尔值的。。1代表为真

#6


取不满足条件的员工:
select a,b,c from tab where b != '2999-12-31' and c != '1'

不就行了。

#7


引用 6 楼 huaxin520 的回复:
取不满足条件的员工:
select a,b,c from tab where b != '2999-12-31' and c != '1'

不就行了。


谢谢,这样不行,
如果一个员工有两条记录,一条满足,一条不满足,那这段代码会将不满足条件的取出来,但是实际上这个员工是满足条件的,因为只要有一条或一条以上的记录满足条件,就可以认为这个员工是没有问题的,

#8


引用 7 楼 tonyibm 的回复:
Quote: 引用 6 楼 huaxin520 的回复:

取不满足条件的员工:
select a,b,c from tab where b != '2999-12-31' and c != '1'

不就行了。


谢谢,这样不行,
如果一个员工有两条记录,一条满足,一条不满足,那这段代码会将不满足条件的取出来,但是实际上这个员工是满足条件的,因为只要有一条或一条以上的记录满足条件,就可以认为这个员工是没有问题的,


是我没整明白你想要的。

#1


伪代码如下:
select count(员工号),员工号 where B=2999-12-31 and C=1 group by 员工号 having count(员工号)>=1

#2


哦 上面是正常员工 那就再not in 子查询一下

#3


select *
from 一个表 t
where not exist (select 1 from 一个表 where 员工号=t.员工号 and B=2999-12-31 and C=1)

#4


谢谢,好像都是可以的,

就是有个问题,3楼的代码,子条件中select 1,是啥意思?

#5


exists()中是返回一个布尔值的。。1代表为真

#6


取不满足条件的员工:
select a,b,c from tab where b != '2999-12-31' and c != '1'

不就行了。

#7


引用 6 楼 huaxin520 的回复:
取不满足条件的员工:
select a,b,c from tab where b != '2999-12-31' and c != '1'

不就行了。


谢谢,这样不行,
如果一个员工有两条记录,一条满足,一条不满足,那这段代码会将不满足条件的取出来,但是实际上这个员工是满足条件的,因为只要有一条或一条以上的记录满足条件,就可以认为这个员工是没有问题的,

#8


引用 7 楼 tonyibm 的回复:
Quote: 引用 6 楼 huaxin520 的回复:

取不满足条件的员工:
select a,b,c from tab where b != '2999-12-31' and c != '1'

不就行了。


谢谢,这样不行,
如果一个员工有两条记录,一条满足,一条不满足,那这段代码会将不满足条件的取出来,但是实际上这个员工是满足条件的,因为只要有一条或一条以上的记录满足条件,就可以认为这个员工是没有问题的,


是我没整明白你想要的。