求互为朋友的数量(去重) 人员表user:(user_id bigint,name string) 朋友关系表relation:(user_id,friend_id) 输入示例:(1,2),(2,1),(1,3),(3,4) 输入示例:1组用户互为朋友

要求求互为朋友的数量(去重),可以使用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语句的执行过程:

  1. 首先,内部的子查询使用DISTINCT关键字找出了所有的互为朋友的关系对(去重)。
  2. 然后,外部的查询对内部查询的结果进行了计数,使用COUNT(*)来统计数量,并将结果命名为num
  3. 最后,将结果返回。

请注意,在这个查询中使用了自连接(self-join),通过将relation表连接两次,分别匹配两个方向的互为朋友的关系。

希望这可以帮助你解决问题。如有更多问题,请随时提问。