php - MySQL FIND_IN_SET OR IN 仅适用于第一个整数?

标签 php mysql sql mysqli

这不是重复问题,我已经阅读了我的搜索标题中提到的所有其他答案。

我的 MySQL 查询应该从表字段“employee_id”中获取整数值。

我的 table : enter image description here

我的查询是:

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

它返回空结果: enter image description here

它仅适用于第一个整数,不适用于任何其他整数。 示例:

如果查询是:

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

它返回正确的结果: enter image description here

如果我使用“FIND_IN_SET(13, task_allotment.employee_id) 查询以“employee_id”开头的整数,您可以在上面看到“它返回正确的结果,但如果我查询任何其他整数返回空结果。我不确定是否只适用于第一个整数?

请指导我如何使用其他整数获得正确的结果。

最佳答案

看起来 employee_id 中存储的字符串不是正确的逗号分隔值,它在每个逗号后包含空格,这就是它不起作用的原因,请参阅 here .

SELECT FIND_IN_SET(5, '1, 2, 4, 5, 6'); // returns 0
SELECT FIND_IN_SET(CONCAT(' ',5), '1, 2, 4, 5, 6'); // returns index 4 but won't work for first value
FIND_IN_SET(1, REPLACE('1, 2, 4, 5, 6', ', ',',')) //  returns index 1, this will for all values

将关系存储在一行中确实是一个糟糕的设计,你应该normalize您的数据并将每个元组(task_id、employee_id)保存在称为联结/数据透视表的新表中的一行中,这样您就不会遇到这些问题

关于php - MySQL FIND_IN_SET OR IN 仅适用于第一个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51078787/

相关文章:

javascript - Ajax 返回空白响应

php - 如何在返回时对从 mysql 返回的每一行进行编号

php - 如何创建随机生成的盐?

mysql - 在 SQL 中计算净交易头寸

mysql - SQL DELETE 从多个表

php - 从正确的表中检索值

Javascript 页面刷新功能在整个代码中存在多个提交按钮的问题

php - 使用 XPATH 语法匹配文本

php - 单独计算并获取每个数字,并计算每个数字在数据库中出现的次数

php - PHP/MySQL 中的好友系统?