需要MySQL选择查询帮助吗
我目前有一个web应用程序,用户可以在其中共享帖子并与其他用户连接。我将每个帖子存储在一个名为“posts”的表中,并将用户之间的所有关系存储在一个名为“relations”的表中 “员额”的结构是: “关系”的结构是: 现在,我希望有一个类似“新闻提要”的页面,用户可以在其中看到他们的朋友(状态=2)或追随者(状态=1)的所有帖子。但是我在这个问题上遇到了麻烦。我知道如何进行简单的选择查询,但我认为这不可能 因此,我想从“posts”表中选择所有posts,其中“user_id”与“relations”表中的“recipient”相同,其中发送者也等于“17”(我将使用一个变量)。最重要的是,如果“关系”中的那一行的状态是“1”,而“帖子”中的“隐私”是“2”,那么跳过那篇帖子 如何编写此查询?使用 使用和where子句,如下所示:需要MySQL选择查询帮助吗,mysql,Mysql,我目前有一个web应用程序,用户可以在其中共享帖子并与其他用户连接。我将每个帖子存储在一个名为“posts”的表中,并将用户之间的所有关系存储在一个名为“relations”的表中 “员额”的结构是: “关系”的结构是: 现在,我希望有一个类似“新闻提要”的页面,用户可以在其中看到他们的朋友(状态=2)或追随者(状态=1)的所有帖子。但是我在这个问题上遇到了麻烦。我知道如何进行简单的选择查询,但我认为这不可能 因此,我想从“posts”表中选择所有posts,其中“user_id”与“relat
SELECT *
FROM posts p
JOIN relations r ON p.user_id = r.recipient
WHERE (r.status = 1 OR r.status = 2)
AND (r.status != 1 OR p.privacy != 2);
为了简洁起见,它有助于为表添加别名(例如“posts p”),以便您随后可以专门引用每个表中的字段(例如“p.privacy”)
这将连接表,包括relations.status为1或2的任何位置,但跳过relations.status为1和posts.privacy为2的任何位置
+-------------+-----------+------------+------------+
|rel_id | sender | recipient | status |
+-------------+-----------+------------+------------+
| 1 | 17 | 4 | 1 |
+-------------+-----------+------------+------------+
Status can either be 1 or 2
SELECT * FROM `posts`
join `relations` on `recipient` = `user_id`
WHERE `status` = 2
SELECT *
FROM posts p
JOIN relations r ON p.user_id = r.recipient
WHERE (r.status = 1 OR r.status = 2)
AND (r.status != 1 OR p.privacy != 2);