这是我的桌子:
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
逻辑是:从每个有孩子的家庭中,显示他们的第一个孩子的名字(每个非父母成员的最高 ID)和相应的家庭 ID。
所以这是我的第一个查询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。
我确定我错过了一些东西,并且有一种简单的方法可以实现这一点,但我不知道如何。
在此先感谢您的帮助