选择至少有一个男孩和一个女孩的parent_id

时间:2015-08-26 14:14:54

标签: sql

表:parent_id, parent_name, child_id, child_gender

如何列出至少有一个男孩和一个女孩的parent_id

2 个答案:

答案 0 :(得分:2)

让有父母的男孩:

select parent_id from table where child_gender = 'M'

让有父母的女孩:

select parent_id from table where child_gender = 'F'

所以要获得两个结果集中的父母:

select parent_id from table where child_gender = 'M'
intersect
select parent_id from table where child_gender = 'F'

注意:两个独立查询可以返回重复项,但intersect将确保每个父项最多出现一次。

答案 1 :(得分:0)

这是使用EXISTS的另一种方式:

SELECT t.parent_id -- , other columns
FROM dbo.TableName t
WHERE EXISTS
(
    SELECT 1 FROM  dbo.TableName t1
    WHERE t1.parent_id = t.parent_id AND t1. child_gender = 'M'
)
AND EXISTS
(
    SELECT 1 FROM  dbo.TableName t1
    WHERE t1.parent_id = t.parent_id AND t1. child_gender = 'F'
)

这不是那么简洁,但如果你想要所有的列或条件更复杂,它有一个优势。