Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 嵌套组_CONCAT查询不';t返回所有值_Mysql_Group Concat - Fatal编程技术网

Mysql 嵌套组_CONCAT查询不';t返回所有值

Mysql 嵌套组_CONCAT查询不';t返回所有值,mysql,group-concat,Mysql,Group Concat,我有一个包含几个子查询的查询,但奇怪的是子查询不会返回相同的值,就像我手动逐个执行查询一样。。起初我在查询中使用'IN',但没有使用索引,所以我将它们转换为'='。结果与“IN”或使用转换为“=”变量时的结果相同 SELECT * FROM partners WHERE id = ( SELECT GROUP_CONCAT( partner_id SEPARATOR ' OR id = ' ) FROM product_feeds WHERE id = ( SELECT GROUP

我有一个包含几个子查询的查询,但奇怪的是子查询不会返回相同的值,就像我手动逐个执行查询一样。。起初我在查询中使用'IN',但没有使用索引,所以我将它们转换为'='。结果与“IN”或使用转换为“=”变量时的结果相同

SELECT * 
FROM partners
WHERE id = ( 

SELECT GROUP_CONCAT( partner_id
SEPARATOR  ' OR id = ' ) 
FROM product_feeds
WHERE id = ( 

SELECT GROUP_CONCAT( DISTINCT feed_id
SEPARATOR  ' OR id = ' ) 
FROM product_data
WHERE category_id = ( 

SELECT GROUP_CONCAT( id
SEPARATOR  ' OR category_id = ' ) 
FROM product_categories
WHERE parent_id = ( 

SELECT GROUP_CONCAT( id
SEPARATOR  ' OR parent_id = ' ) 
FROM product_categories
WHERE parent_id =1 ) 

ORDER BY NULL ) 

ORDER BY NULL ) 

ORDER BY NULL ) 
例如,当我手动执行嵌套最深的3个子查询时,最终结果是10,11,12,33,34,35。当我一次执行全部3个子查询时,它们返回10,11,12


我缺少结果。

这是一个内部联接的作业,用于从存在关系的多个表中获取结果,而不是试图依赖于GROUP_CONCAT

SELECT 
    -- Best to specify the precise fields you want here instead of *
    *

FROM partners p

INNER JOIN product_feeds pf
ON pf.partner_id = p.id

INNER JOIN product_data pd
ON pd.feed_id = pf.id

INNER JOIN product_categories pc
ON pc.id = pd.category_id

INNER JOIN product_categories pcparent
ON pcparent.id = pc.parent_id
AND pcparent.parent_id = 1

这不是试图依赖于GROUP_CONCAT,而是内部连接从存在关系的多个表中获取结果的工作

SELECT 
    -- Best to specify the precise fields you want here instead of *
    *

FROM partners p

INNER JOIN product_feeds pf
ON pf.partner_id = p.id

INNER JOIN product_data pd
ON pd.feed_id = pf.id

INNER JOIN product_categories pc
ON pc.id = pd.category_id

INNER JOIN product_categories pcparent
ON pcparent.id = pc.parent_id
AND pcparent.parent_id = 1