Php Mysql查询其他查询的结果集

Php Mysql查询其他查询的结果集,php,mysql,resultset,Php,Mysql,Resultset,我的MySQL数据库中有2个自定义表(DB名称:test) 我的表格数据如下: 表格:sku entity_id sku 1 24-MB01 2 24-MB03 3 24-UB02 4 24-UB01 以下是使用上述查询找到的结果集: entity_id sku category 1 24-MB01 3,5 2 24-MB03 7,3 3

我的MySQL数据库中有2个自定义表(DB名称:test)

我的表格数据如下:

表格:sku

entity_id sku 1 24-MB01 2 24-MB03 3 24-UB02 4 24-UB01 以下是使用上述查询找到的结果集:

entity_id sku category 1 24-MB01 3,5 2 24-MB03 7,3 3 24-UB02 21,50,20 4 24-UB01 4,3 实体标识sku类别 1 24-MB01 3,5 2 24-MB03 7,3 3 24-UB02 21,50,20 4 24-UB01 4,3 现在,我想使用这个结果集来查找特定类别的记录(假设类别id为3)。当我在查询中使用FIND_IN_SET时,结果中的category列中只有3个。我想让它像:

entity_id sku category 1 24-MB01 3,5 2 24-MB03 7,3 4 24-UB01 4,3 实体标识sku类别 1 24-MB01 3,5 2 24-MB03 7,3 4 24-UB01 4,3
我如何才能达到预期的结果?

添加一个
具有
子句:

SELECT sku.entity_id, 
    sku.sku, 
    GROUP_CONCAT(cat.category SEPARATOR ",") as category 
FROM sku, cat 
WHERE cat.entity_id = sku.entity_id 
GROUP by sku.entity_id
HAVING SUM(cat.category = 3) > 0;

(顺便说一句,这在MySQL中使用了true=1,false=0。在其他数据库管理系统中,如果cat.category=3,则1 ELSE 0 END)>0。)

添加一个
HAVING
子句:

SELECT sku.entity_id, 
    sku.sku, 
    GROUP_CONCAT(cat.category SEPARATOR ",") as category 
FROM sku, cat 
WHERE cat.entity_id = sku.entity_id 
GROUP by sku.entity_id
HAVING SUM(cat.category = 3) > 0;

(顺便说一句,这在MySQL中使用了true=1,false=0。在其他数据库管理系统中,SUM(cat.category=3,则1 ELSE 0 END)>0。)

为什么不在查询的末尾添加具有类似“%3%”的类别的

因此,完整的查询如下所示:

SELECT sku.entity_id, 
    sku.sku, 
    GROUP_CONCAT(cat.category SEPARATOR ",") as category 
FROM sku, cat 
WHERE cat.entity_id = sku.entity_id 
GROUP by sku.entity_id
HAVING category LIKE '%3%'

为什么不在查询的末尾添加类别为“%3%”的

因此,完整的查询如下所示:

SELECT sku.entity_id, 
    sku.sku, 
    GROUP_CONCAT(cat.category SEPARATOR ",") as category 
FROM sku, cat 
WHERE cat.entity_id = sku.entity_id 
GROUP by sku.entity_id
HAVING category LIKE '%3%'

您可以将
HAVING
子句与
FIND_IN_SET
一起使用:

SELECT sku.entity_id, 
    sku.sku, 
    GROUP_CONCAT(cat.category SEPARATOR ",") as category 
FROM sku, cat 
WHERE cat.entity_id = sku.entity_id 
GROUP by sku.entity_id
HAVING FIND_IN_SET(3, category)

您可以将
HAVING
子句与
FIND_IN_SET
一起使用:

SELECT sku.entity_id, 
    sku.sku, 
    GROUP_CONCAT(cat.category SEPARATOR ",") as category 
FROM sku, cat 
WHERE cat.entity_id = sku.entity_id 
GROUP by sku.entity_id
HAVING FIND_IN_SET(3, category)

编辑您的问题,并添加第二个查询,其中包含FIND_IN_SET和该查询的结果。还可以添加带有少量示例数据的表的模式,这样我就可以设置一个SQL FIDLE。编辑您的问题并添加第二个查询(FIND_IN_SET)和该查询的结果。还添加了表的模式和一些示例数据,这样我就可以设置一个SQL FIDLE了。非常有趣。非常有趣。