[英]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.