MySql非平凡选择

时间:2016-03-08 20:06:37

标签: mysql sql relational-database sql-order-by having

我有表friendsuser_id friend_id date。 它的行意味着:user_id在某个日期将另一个用户添加给朋友

我需要提出请求:获取用户,对于他们的每个请求,他们都会回复。

获取所有用户x:for all(x,y,date)=> (y,x,date2):date2>日期

我尝试写请求,是否适用于所有情况?

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技能不好。

1 个答案:

答案 0 :(得分:1)

我认为这必须是有效的。它将为所有用户提供所有反向链接

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);

请告诉我它是否适合您