我有一个朋友表,其中有两列, id1 ,这是学生的ID, id2 是学生ID2的ID。
朋友
列名:id1 - > ID2
我必须找到最多朋友的学生。
我收到的是这种形式的数据:
person(id) - > pp和ppp的朋友数量
通过在朋友上申请一个小组
对于那个子查询,我选择了计数最高的学生。
这是我的问题:
select * from
(select kk.id1 as id3, count(*) as b from friend kk group by kk.id1) pp
where not exists
(select * from
(select kk1.id1 as id2, count(*) as b1 from friend kk1 group by kk1.id1) ppp
where ppp.b1 > pp.b )
这是一个简单的查询,但我得到的结果不正确。谁能指出我做错了什么?
答案 0 :(得分:1)
确实是个好问题。我重新格式化了您的查询以使其更具可读性,并且我已经在SQL Server和SQLite中对其进行了测试。在SQL Server中,查询似乎表现得如预期,但在SQLite中却没有。我还没有找到任何解释(还),仍在努力......
SELECT *
FROM (SELECT F1.id1 as id3,
count(*) as Count1
FROM Friend AS F1
GROUP BY F1.id1) sub1
WHERE NOT EXISTS ( SELECT *
FROM (SELECT F2.id1 as id2,
count(*) as Count2
FROM Friend AS F2
GROUP BY F2.id1) sub2
WHERE sub2.Count2 > sub1.Count1);
答案 1 :(得分:0)
SELECT A, COUNT(*) totalFriends
FROM
(
SELECT ID1 A, ID2 B FROM Friend
UNION
SELECT ID2 A, ID1 B FROM Friend
) s
GROUP BY A
ORDER BY totalFriends DESC
LIMIT 1