MySQL查询问题

时间:2009-12-06 16:50:35

标签: mysql

我有三个表(用户朋友帖子)和两个用户( user1 用户2 )。

user1 user2 添加为朋友时, user1 可以像在Facebook上一样查看 user2 的帖子。但只有 user1 user2 添加为朋友的日期之后的帖子。我的查询是这样的:

SELECT * FROM posts p JOIN friends f ON p.userid = f.friendid 
AND s.time >= f.friend_since WHERE f.myid='user1id'

然后它在我添加为好友之后的日期之后给了我关于 user2 的所有帖子。 但问题是它隐藏了 user1 的帖子,并在添加日期后仅显示 user2 的帖子。

user1 应该会看到 user2 的所有帖子和 user2 的所有帖子, user2 在添加日期之后发布了朋友。

我该如何解决?

2 个答案:

答案 0 :(得分:1)

您可以使用UNION加入来自其他查询的结果,如下所示:

SELECT *
FROM posts p 
JOIN friends f ON p.userid = f.friendid AND s.time >= f.friend_since
WHERE f.myid='user1id'
UNION SELECT *
    From posts p 
    WHERE p.userid='user1id'

答案 1 :(得分:0)

获取user1的所有好友ID,然后选择所有帖子.. WHERE ( p.userid IN ( FRIENDS_IDS ) AND s.time >= f.friend_since ) OR p.userid = USER_ID 这种方式比一个查询中的联合和联接要快得多。