sql查询如何写?

假设一个问卷的在线答题

问卷可以设置答题人所属部门的id列表,假设为  1,2,3,5,6(部门id是1,2,3,5,6的人可以答题)

职员可以属于多个部门,也可以有所属部门的id列表,假设为6,7,8

那么我现在要查询出能够有权限答题的职员的集合,该怎么来写这个sql。

select * from staff where pardment  = 1 or padment like %,1,% or pardment like %,1% or pardment like %1,%

主要是如果只用一个like的话   1可能会同时匹配到12,13,14,15

而且职员也可以属于多个部门。   


简化的sql该如何写?

咕咕问
浏览 1573回答 3
3回答

产品经理不是经理

select * from staff  where concat(',',department_id_list,',')  regexp (     select concat(',(',replace(q.department_id_list,',','|'),'),') from question q     where question_naire_id='xxx' );

咕咕问

职员表和问卷表

产品经理不是经理

你员工和部门是多对多关系。你还是把表结构贴出来吧。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL