要求求互为朋友的数量(去重),可以使用SQL语句进行查询和计算。假设人员表名为user
,朋友关系表名为relation
,且数据已经插入到相应的表中。
使用以下SQL语句可以实现求互为朋友的数量(去重):
SELECT COUNT(*) as num
FROM (
SELECT DISTINCT r1.user_id, r1.friend_id
FROM relation r1
INNER JOIN relation r2 ON r1.user_id = r2.friend_id AND r1.friend_id = r2.user_id
) AS mutual_friends;
解释一下上面的SQL语句的执行过程:
- 首先,内部的子查询使用
DISTINCT
关键字找出了所有的互为朋友的关系对(去重)。 - 然后,外部的查询对内部查询的结果进行了计数,使用
COUNT(*)
来统计数量,并将结果命名为num
。 - 最后,将结果返回。
请注意,在这个查询中使用了自连接(self-join),通过将relation
表连接两次,分别匹配两个方向的互为朋友的关系。
希望这可以帮助你解决问题。如有更多问题,请随时提问。