いくつかのサブクエリを含むクエリがありますが、奇妙なことに、クエリを 1 つずつ手動で実行した場合と同じ値がサブクエリから返されません。最初はクエリ内で '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 が返されます。
私は結果がありません..