如果我有两个用户,一个用户在帖子表中有很多帖子,即
postid, post, userid, time(i.e timestamp)
我又为朋友准备了一张桌子,
id, friendid, userid, friend_sinc(i.e timestamp)
现在我希望用户朋友在将user1添加为好友的日期之后应该看到user1的帖子。不是比他更早的帖子,他把他加为朋友。我怎样才能在单个MySQL查询中完成它?
答案 0 :(得分:0)
这会查看人们与用户12成为朋友后的所有帖子:
select *
from Posts p
join Friends f
on p.userid = f.friendid
and p.time >= f.friend_since
where f.userid = 12
答案 1 :(得分:0)
SELECT p.*
FROM post p, friend f
WHERE p.userid = f.userid AND p.time >= f.friend_sinc;
编辑:我想它可以被解释为哪个人在哪个,但重点是明确的。
答案 2 :(得分:0)
使用联盟
select p.* from posts p where p.userid = <my_user_id>
union
select p.* from posts p, friends f where
p.userid = f.friendid and
f.userid = <my_user_id> and
p.time >= f.friend_since
或者您认为自己是自己的朋友,也就是说,friend
中有friendid = <my_user_id> and userid = <my_user_id> and friend_since = <date user was created>
的条目,然后第二个查询也可以运行并返回您自己的帖子。我认为你没有重复。