我有時會遇到有父/子關係的情況,並且想要爲每個父項選擇所有子項。您是否可以在將特定行值提取到選定列的同時進行GROUP BY
這是一個膚淺的例子。
SELECT parent.id as parent_id, child.id as child_id
FROM parent LEFT JOIN child ON parent.id = child.parent_id
ORDER BY parent.id
會產生
parent_id child_id
1 20
1 21
2 33
2 67
我想這樣做
SELECT parent.id, child1.id as child1_id, child2.id as child2_id
FROM parent LEFT JOIN child ON parent.id = child.parent_id
GROUP BY parent.id
和產量
parent_id child1_id child2_id
1 20 21
2 33 67
我試圖避免使用GROUP_CONCAT
因爲我想創造分離每個孩子的列。
我意識到我可以兩次加入孩子並過濾選擇,但給我的實際數據集,它可能會毛茸茸的加入兩次。此外,如果您可以使用任意數量的子女來做到這一點,那真的很酷:
parent_id child1_id child2_id child3_id
1 20 21 null
2 33 67 109
3 45 null null
這是一個直接的父母和孩子之間一個層次關係或者在你想獲得孩子的所有兒童多層次的關係? –
這是下一個派生關係。沒有孫子需要。 –