Php 我在查询I';m在一个用逗号分隔的表中存储多个雇员id

Php 我在查询I';m在一个用逗号分隔的表中存储多个雇员id,php,mysql,sql,phpmyadmin,Php,Mysql,Sql,Phpmyadmin,我对查询中的SQL有一个问题:我在一个表中存储了多个员工ID,每个任务都用逗号分隔。当我尝试在查询中使用获取任务时,我没有获取包含员工ID的行 我的问题是: select t.*, e.emp_name, d.department_name from task as t LEFT JOIN employee as e on(e.emp_id=t.assign_to) LEFT JOIN department as d on(d.depart_id

我对查询中的SQL
有一个问题:我在一个表中存储了多个员工ID,每个
任务都用逗号分隔。当我尝试在
查询中使用
获取
任务
时,我没有获取包含员工ID的行

我的问题是:

select 
   t.*, 
   e.emp_name, 
   d.department_name 
from 
   task as t 
   LEFT JOIN employee as e on(e.emp_id=t.assign_to) 
   LEFT JOIN department as d on(d.depart_id=e.depart_id) 
where 
   t.task_status='PENDING' 
   AND t.created_by!='31' 
   AND t.assign_to IN ('31') 
order by 
   t.task_id DESC

中的数据库中存储的值不是这样工作的

例如,如果您的数据如下所示:

ManagerName, ManagerOf
'John', 'Steve,Sarah,Dave'
你不能这样做:

SELECT * FROM managers WHERE 'sarah' IN ManagerOf
在中,最好将其视为或的延伸:

SELECT * FROM managers WHERE managerof IN ('Sarah','Steve')
--is the same as:
SELECT * FROM managers WHERE 
  managerof = 'Sarah' OR
  managerof = 'Steve'
列表中的项目数量与或条款数量相同

希望这能告诉您为什么数据库不返回任何结果。。因为
Steve,Sarah,Dave
的值不等于
Sarah
Steve
。数据库不会查看逗号并说“哦,这是一个列表”——它只是一个字符串,偶尔会有一个逗号字符

使用LIKE和string-concat可以快速实现您想要的目标,但老实说,它们不值得回答

您需要更改数据库结构,以包含一个新表,该表跟踪任务id及其分配给的员工id。完成此操作后,您将能够在employee id列上使用IN,正如您希望在该查询中使用的那样