MySql 不平凡 select

MySql non-trivial select

我有 table friends: user_id friend_id date。 它的行表示:user_id 在某个日期将另一个用户添加为朋友

我需要发出请求:获取用户,对于他们的每个请求,他们都有响应。

获取所有用户 x:对于所有 (x, y, date) => (y, x, date2) : date2 > date

我试过写请求,它应该适用于所有情况吗?

select f.user_id from friend f
group by f.user_id
having 
     (select count(f2.user_id) from friend f2
      where f2.date > f.date and f2.friend_id = f.user_id
      group by (f.friend_id)) = count(f.friend_id)

我的sql技能很差。

我认为这一定行得通。它将向所有用户提供他们所有的反向链接

SELECT
  f.user_id
FROM friend f
LEFT JOIN friend f2 ON 
  f.friend_id = f2.user_id 
AND 
  f2.friend_id = f.user_id
AND
  f2.date > f.date
GROUP BY
  f.user_id
HAVING
  count(f.user_id) = count(f2.user_id);

请告诉我它是否适合你