我有一个父表,称为它parents
。每个父母在第二张桌子中都有一些孩子children
。典型的左联接将是这样的:
select *
from parents p
left join children c
on p.id = c.parent_id
但这将返回每个子行并重复所有父信息。我想要的(对于此应用程序)是每个父级的第一个子级,以便结果集具有与父级表相同的行数。
Parent1 Child_of_parent1_1
Parent2 Child_of_parent2_1
Parent3 Child_of_parent3_1
我试图在陌生的地方摆出与众不同的地方,但似乎无法弄清楚这一点。
SELECT A.* FROM
(
SELECT p.*, c.child_id, some_field_of_children
FROM parents p
LEFT JOIN children c ON p.id = c.parent_id
) A
WHERE A.child_id = ( SELECT MIN(B.child_id) FROM children B WHERE B.parent_id = A.parent_id)
我假设childs表具有'child_id'作为其PK,我们可以用来获取第一个孩子。
您可以用“ timestamp”或“ child_position”等另一列替换child_id,...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句