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);
请告诉我它是否适合你
我有 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);
请告诉我它是否适合你