比方說,我有兩個相關的表parents
和children
與一對多的關係(一個parent
到很多children
)。通常,當我需要處理這些表上的信息一起,我做一個查詢,如下面的(用WHERE
條款通常加入):在SQL中,如何選擇所有有孩子的父母?
SELECT * FROM parents INNER JOIN children ON (parents.id = children.parent_id);
我怎麼能選擇具有至少一個child
所有parents
沒有浪費時間加入所有children
到他們的parents
?
我正在考慮使用某種OUTER JOIN
,但我不確定如何處理它。
(請注意,我問這個問題一般,所以不給我,被綁定到特定的RDBMS實現一個答案,除非沒有通用的解決方案。)
做一個'LEFT JOIN'並過濾一些子字段(例如Name)爲NOT NULL。要讓每個父代只有一次需要使用DISTINCT或(如果有意義)「GROUP BY」。 –
@ PM77-1謝謝!我使用'GROUP BY'工作,但我不確定如何使用'DISTINCT'。另外,你可以將它作爲答案嗎? – Matt