这不是重复的问题,我已经阅读了所有其他答案提到我的搜索标题。
我有一个mysql查询,它应该从表字段'employee\u id'中输入整数值。
我的table:
我的问题是:
SELECT `task_allotment`.`task_id`, `task_allotment`.`sub_proj`, `task_allotment`.`project_id`, `task_allotment`.`task_name`, `task_allotment`.`task_date`, `task_allotment`.`task_status`, `task_allotment`.`assign_by`, `project`.`provider_id` FROM `task_allotment` INNER JOIN `project` ON `task_allotment`.`project_id` = `project`.`project_id` WHERE FIND_IN_SET(9, `task_allotment`.`employee_id`) && `task_allotment`.`task_status` !="Complete" ORDER BY `task_allotment`.`task_id` DESC
返回空结果:
它只适用于第一个整数,而不适用于任何其他整数。例子:
如果查询为:
SELECT `task_allotment`.`task_id`, `task_allotment`.`sub_proj`, `task_allotment`.`project_id`, `task_allotment`.`task_name`, `task_allotment`.`task_date`, `task_allotment`.`task_status`, `task_allotment`.`assign_by`, `project`.`provider_id` FROM `task_allotment` LEFT JOIN `project` ON `task_allotment`.`project_id` = `project`.`project_id` WHERE FIND_IN_SET(1, `task_allotment`.`employee_id`) && `task_allotment`.`task_status` !="Complete" ORDER BY `task_allotment`.`task_id` DESC
它返回正确的结果:
如果我用整数查询“employee\u id”开头的位置,使用“find\u in\u set(13, task_allotment
. employee_id
)“它返回正确的结果,但如果我查询其他整数,则返回空结果。我不确定是否只适用于第一个整数?
请指导我如何使用其他整数得到正确的结果。
2条答案
按热度按时间mtb9vblg1#
如果整数中有空格,我可以看到
1, 2, 4, 5, 7,..
,则它将不起作用。我也有同样的问题。solution:replace function 在mysql中可以帮助。只需用空白字符串替换该字段中的所有空格
''
.注意:下次用空格保存值时要小心。
kzmpq1sx2#
它看起来像是存储在
employee_id
不是一个正确的逗号分隔值,它在每个逗号后都包含空格,这就是它不起作用的原因,请参见此处。将关系存储在一行中确实是一个糟糕的设计,您应该规范化您的数据,并将每个元组(task\u id、employee\u id)保存在新表(称为junction/pivot table)的一行中,这样您就不会有这些问题