这是我的表:
ID NAME FAMILY_ID HASKIDS ISPARENT
--------------------------------------------------------
1 John 1 1 1
2 Bill 1 1 0
3 Dick 1 1 0
4 Jane 2 1 1
5 Mary 2 1 0
6 Pete 3 0 1
7 Jess 3 0 1
我希望结果是
NAME FAMILY_ID
---------------------
Bill 1
Mary 2
逻辑是:来自每个有孩子的家庭,显示他们的第一个出生的姓名(每个非父母成员的最高身份)和相应的家庭身份。
所以这是我的第一个查询 query1 :
SELECT DISTINCT family_id
FROM families
WHERE (haskids=1)
ORDER BY family_id;
这导致(正确):
1
2
我的第二个问题是 query2 :
SELECT TOP 1 name, family_id
FROM families
WHERE family_id IN (SELECT family_id FROM query1) AND isparent=0
ORDER BY id;
有不良后果:
NAME FAMILY_ID
---------------------
Bill 1
因为top 1不会从每个子结果中带来前1个,而是整个较小的条目id。
我确定我错过了一些东西,并且有一种简单的方法可以实现这一点,但我无法弄清楚如何。
提前感谢您的帮助
答案 0 :(得分:1)
select *
from YourTable
where id in
(
select min(id)
from YourTable
where isparent = 0
group by
family_id
)