繁体   English   中英

具有内部联接和多个条件的MySQL查询

[英]MySQL Query with Inner Join and multiple conditions

我在解决如何正确使用内部联接并将一个MySQL查询中的多个条件定位到其他表方面遇到麻烦。

基本上,我正在为我的网站创建一个小型的追随者供稿,该供稿将输出您所关注的任何用户的新帖子。

帖子表:

id | user_id | message | timestamp

跟随表:

id | follower_id | following_id

到目前为止,我的查询:

SELECT posts.*
FROM posts
INNER JOIN follows
ON posts.user_id = follows.following_id
WHERE follows.follower_id = 1
ORDER BY id DESC limit 10

如何在其中添加条件:1.)大于或小于ID(posts.id)2.)指定它也可以通过用户ID 1发布(我自己的帖子)

当然,1将被变量替换,因此对于当前用户会话是动态的。

这里有任何建议,对此真的感到困惑。

要添加条件“ 1.)大于或小于ID(posts.id)”,只需使用AND运算符将条件添加到WHERE子句末尾的查询中即可。 条件本身是(以大于为例):

posts.id > $n

其中$ n是一些整数。

要添加条件“2。)指定它也可以通过用户ID 1(我自己的帖子)发布,则可以使用OR运算符。 您提供的条件说明中的关键字是“也”,这就是为什么我们将使用OR运算符而不是AND运算符的原因。 条件本身是:

posts.user_id = $my_user_id

其中$ my_user_id是进行查询或查看供稿的用户的user_id。

假设您要同时满足条件1 条件2以及既有条件“ follows.follower_id = 1”,则希望使用括号对条件进行分组。 它可能会帮助您写出您的条件以及您希望如何用简单的语言分组。 例如:

显示我或我关注的人发表的所有帖子,并且ID大于/小于给定数字。

这些条件可以用SQL表示为:

WHERE (follows.follower_id = $my_user_id
OR posts.user_id = $my_user_id)
AND posts.id > $n

完成的查询将是:

SELECT posts.*
FROM posts
INNER JOIN follows
ON posts.user_id = follows.following_id
WHERE (follows.follower_id = $my_user_id
OR posts.user_id = $my_user_id)
AND posts.id > $n
ORDER BY id DESC
LIMIT 10;

您可以在posts.user_id = 1ON连接子句中添加OR子句,还可以根据需要在WHERE子句中为posts.id > ###加上AND

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM