MySQL代码试图从我关注的人那里获取数据时遇到一些问题+;我自己
所以我现在正在编写一个类似推特的新闻提要,但问题是我自己的帖子在帖子之前显示了4次(下面有4个条目,我想这就是为什么它会显示我的帖子4次)MySQL代码试图从我关注的人那里获取数据时遇到一些问题+;我自己,mysql,sql,Mysql,Sql,所以我现在正在编写一个类似推特的新闻提要,但问题是我自己的帖子在帖子之前显示了4次(下面有4个条目,我想这就是为什么它会显示我的帖子4次) 这是我目前的代码。虽然我认为这是错误的,因为它会显示我的帖子4次。如何解决此问题?由于您在加入标准中使用了或,我相信当post\u user\u id=1时,您将收到笛卡尔积。请尝试以下方法: SELECT * FROM following AS f JOIN posts AS p ON f.follower_id = p.post_user_id
这是我目前的代码。虽然我认为这是错误的,因为它会显示我的帖子4次。如何解决此问题?由于您在
加入标准中使用了或,我相信当post\u user\u id=1
时,您将收到笛卡尔积。请尝试以下方法:
SELECT *
FROM following AS f
JOIN posts AS p ON f.follower_id = p.post_user_id
WHERE p.post_user_id = 1 OR f.user_id = 1
ORDER BY p.post_time DESC
既然看起来你真的不在乎后面的中的字段,而只想要帖子,那么使用左连接怎么样
SELECT p.*
FROM posts p
LEFT JOIN following f ON f.follower_id=1 AND p.post_user_id = f.user_id
WHERE post_user_id=1 OR f.user_id IS NOT NULL
ORDER BY `p`.`post_time` DESC
.请添加表结构、示例数据和预期输出。您真的希望结果来自“following”的数据,还是仅在查询中使用它来查找是否应显示帖子?
SELECT p.*
FROM posts p
LEFT JOIN following f ON f.follower_id=1 AND p.post_user_id = f.user_id
WHERE post_user_id=1 OR f.user_id IS NOT NULL
ORDER BY `p`.`post_time` DESC