这个问题在这里已经有答案了:
在数据库列中存储分隔列表真的那么糟糕吗(10个答案)
两年前关门了。
我对sql有问题 IN
查询:我在一个表中存储多个雇员ID,每个ID用逗号分隔 task
. 当我试着去拿 task
带着一个 IN
查询,我没有得到包含员工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
数据库中的存储值
1条答案
按热度按时间j8ag8udp1#
我的工作不是这样的
如果您的数据看起来像:
你不能这样做:
在中,最好设想为或的延伸:
or子句的数量与in列表中的项的数量相同。
希望这能告诉你为什么数据库不返回任何结果。。因为
Steve,Sarah,Dave
不等于Sarah
或者Steve
. 数据库不会看逗号然后说“哦,那是一个列表”——它只是一个字符串,偶尔碰巧有一个逗号字符有令人讨厌的快速黑客来达到你想要的,使用喜欢和字符串concat,但他们不值得一个答案,老实说
您需要更改数据库结构,以包含一个新表,该表跟踪任务id及其分配给的员工id。完成此操作后,您将能够在employee id列上使用in,正如您希望的那样