Mysql 如何从一个表中返回多行,其中每行都有一个公共值,该值在一列中由逗号分隔

Mysql 如何从一个表中返回多行,其中每行都有一个公共值,该值在一列中由逗号分隔,mysql,Mysql,我有两个表business\u details和business\u services business\u details表有多列,但对于此查询,我使用了两列business\u details\u Id(business\u services外键)和business\u details\u Type。在business\u services中,我使用了一个列business\u services\u Names,其中有多个值,用逗号分隔 从用户处获取输入后,我想返回所有业务\u详细信息\u

我有两个表
business\u details
business\u services

business\u details
表有多列,但对于此查询,我使用了两列
business\u details\u Id
(business\u services外键)和
business\u details\u Type
。在
business\u services
中,我使用了一个列
business\u services\u Names
,其中有多个值,用逗号分隔

从用户处获取输入后,我想返回所有
业务\u详细信息\u Id
,该用户是
业务\u详细信息\u类型
业务\u服务\u名称
(从多个值中选择)

我不能像那样使用
来避免不需要的URL。在\u集中查找只返回一行

以下是我尝试的查询:

SELECT business_details.Business_Details_Id
FROM business_details
    LEFT JOIN business_services ON 
        business_details.Business_Details_Id = business_services.Business_Details_Id
WHERE business_details.Business_Details_Active = 1
    AND business_details.Business_Details_Type = '$category'
    OR FIND_IN_SET('$category', business_services.Business_Services_Names);

Business\u-Details\u-Active
仅用于显示值为1的结果,如果您只需要
Business\u-Details\u-Active
的结果,则需要将其与
条件分开:

SELECT business_details.Business_Details_Id
FROM business_details
    LEFT JOIN business_services ON 
        business_details.Business_Details_Id = business_services.Business_Details_Id
WHERE business_details.Business_Details_Active = 1
    AND 
         (
            business_details.Business_Details_Type = '$category'
            OR FIND_IN_SET('$category', business_services.Business_Services_Names)
         );
其次,您真的不需要
。您可以将两个字段连接起来,然后根据结果执行
在\u集合中查找\u

SELECT business_details.Business_Details_Id
FROM business_details
    LEFT JOIN business_services ON 
        business_details.Business_Details_Id = business_services.Business_Details_Id
WHERE business_details.Business_Details_Active = 1
    AND FIND_IN_SET('$category', CONCAT_WS(business_services.Business_Services_Names, business_details.Business_Details_Type));
使用
Concat\u WS()
业务详细信息\u类型
带到逗号分隔的
业务服务\u名称
字段中,并使用自己的逗号,这将允许
在\u集合中查找()
发挥神奇的作用

还有两件事:

从他们那里:
Find_In_Set()
“…如果第一个参数包含逗号(“,”)字符,则无法正常工作。”请记住,如果这仍然不适用于您


此外,您的代码容易受到SQL注入的攻击,因为您正在接受用户输入并将其直接放入代码中。我不确定您使用什么脚本语言来捕获该变量并将其传递给SQL,但在将其添加到SQL之前至少进行清理将是一个非常明智的决定。

include db schema,示例数据和期望输出。请阅读,这里是一个学习如何提高问题质量和获得更好答案的好地方。我尝试使用上述查询,但它仅适用于业务\u详细信息\u类型。它不按业务服务名称显示结果
业务服务名称中的值是否用逗号分隔,或者是否有其他字符用作分隔符?你能分享其中一个记录的例子吗?是的。服务包括“健身中心、Silm Fit、健康产品经销商、健康食品、健康中心”