我正在网站上建立以下系统。例如,一个用户关注500个人,当该用户转到主页时,它将显示从那500个人发布的消息。我将进行如下查询:

SELECT UserComments FROM comments_table
WHERE UserName = user1 OR user2 OR user3(...)
ORDER BY PostDate DESC.


问题是,我想从后面获取用户的注释,并且想用or运算符获取它们,但是我必须在用户名之间包含很多or运算符。添加大量or运算符是一种好习惯吗?

我该怎么办?我正在使用MYSQL。

最佳答案

您最好将这些关系存储在表中,然后按每个用户加入表中。

因此,您有一个带ID的User表。带有LoggedInUserID和FollowedUserID的关注表。然后通过下表加入以获得评论。为LoggedInUser所关注的每个用户在Follow中插入1条记录。这样,您可以跟踪用户之间的关系并充分利用这些表上的索引。

SELECT comments.UserComments FROM Following
INNER JOIN comments on comments.UserID = Following.FollowedUserID
WHERE Following.LoggedInUserID = UserID;


用户

UserID  Field1    Field2
1       "Stuff"   "OtherStuff"
2       "More"    "Blah"
3       "And"     "Blerg"


以下

LoggedInUser    FollowedUserID
1               2
1               3
2               1
3               2

关于mysql - SQL-包括很多OR运算符(例如1000或更多)在我的网站上建立跟踪系统是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32280244/

10-12 17:45