表:parent_id, parent_name, child_id, child_gender
如何列出至少有一个男孩和一个女孩的parent_id
。
答案 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'
)
这不是那么简洁,但如果你想要所有的列或条件更复杂,它有一个优势。