我正在尝试实现一个奇怪的查询。我有一张这样的桌子:
表人
-----------------------
| id | name | family |
+----+------+--------+
| 1 | Bob | Smith |
+----+------+--------+
| 2 | Joe | Smith |
----------------------
我想像这样返回一个关联数组
id : 1
name : bob
family : smith
familySize : 2
这样的事情
"SELECT id, name, family, familySize FROM People"
如何在那里获得familySize?请记住,我的查询可能有许多家庭,我希望他们全部返回。
谢谢。
答案 0 :(得分:3)
以上2个答案不适用于多个家庭。
您可以这样做:
SELECT id, name, family, familySize FROM People p1
JOIN (SELECT COUNT(*) as familySize, family FROM People GROUP BY family) p2
USING(family)
答案 1 :(得分:1)
你可以这样做
SELECT id,name,family,count(id)as familySize FROM People
答案 2 :(得分:1)
"SELECT id, name, family, count(family) as familySize FROM People group by
family"
答案 3 :(得分:1)
我想在这里提一下,如果两个或三个家庭有相同的姓氏"史密斯"它不会给你想要的结果。
我建议您在表中插入数据时指定一个族头,并且所有家庭成员都有一个名为family_ID的字段,其主键为family_head的值。
这将为您提供1000个人的准确结果。我已经创建了一个家庭门户网站,现在有超过12k的成员,它对我来说很好。
希望它有所帮助。