sql 怎么样才可以一个列同时满足多个条件

时间:2022-05-25 22:25:34
假如说有这样一个身份表

人id  身份    

22356 导演
22469 编剧
22356 演员
22356 制片人
22356 道具师
22389 作曲人
21598 演员
19568 导演
..... ....
..... ....

在一个电影里一个人的身份可以是编剧可以是演员也可以是导演,
假如说我要找一个人同时是导演也是编剧也是演员 应该怎么写
我试了用

select 人的id from 身份表
where 身份= '导演' and 身份 = '编剧' and 身份 = '演员'

可是这样返回的0,什么都没的……请问要怎么样写才可以得出我想要的结果~谢谢!

4 个解决方案

#1


select 人的id from 身份表 t
where 身份= '导演' 
and exists (select 2 from 身份表 where 人的id=t.人的id and 身份= '编剧' )
and exists (select 2 from 身份表 where 人的id=t.人的id and 身份= '演员' )

#2


select distinct 人id from 身份表 a where exists(
select 1 from 身份表 where a.人id=人id and 身份='导演')
and 
exists(
select 1 from 身份表 where a.人id=人id and 身份='演员')
  

#3


引用 1 楼  的回复:
select 人的id from 身份表 t
where 身份= '导演' 
and exists (select 2 from 身份表 where 人的id=t.人的id and 身份= '编剧' )
and exists (select 2 from 身份表 where 人的id=t.人的id and 身份= '演员' )

如果我多了一个列是列出电影编号的话~要找出那些人的id在超过10部电影中同时当编剧导演跟演员
意思就是一个人在电影1中都是导演编剧演员再电影2中也是这3个角色在电影3中也是这3个角色,然后要找出这些人在超过10部的电影中都是扮演这3个角色

#1


select 人的id from 身份表 t
where 身份= '导演' 
and exists (select 2 from 身份表 where 人的id=t.人的id and 身份= '编剧' )
and exists (select 2 from 身份表 where 人的id=t.人的id and 身份= '演员' )

#2


select distinct 人id from 身份表 a where exists(
select 1 from 身份表 where a.人id=人id and 身份='导演')
and 
exists(
select 1 from 身份表 where a.人id=人id and 身份='演员')
  

#3


引用 1 楼  的回复:
select 人的id from 身份表 t
where 身份= '导演' 
and exists (select 2 from 身份表 where 人的id=t.人的id and 身份= '编剧' )
and exists (select 2 from 身份表 where 人的id=t.人的id and 身份= '演员' )

如果我多了一个列是列出电影编号的话~要找出那些人的id在超过10部电影中同时当编剧导演跟演员
意思就是一个人在电影1中都是导演编剧演员再电影2中也是这3个角色在电影3中也是这3个角色,然后要找出这些人在超过10部的电影中都是扮演这3个角色

#4