簡體   English   中英

嵌套的GROUP_CONCAT查詢不會返回所有值

[英]Nested GROUP_CONCAT query doesn't return all values

我有一個帶有幾個子查詢的查詢,但是奇怪的是,子查詢不會返回與手動執行一個查詢相同的值。首先,我在查詢中使用了“ 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,這是INNER JOIN的工作,可以從存在關系的多個表中獲取結果。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM