在这种情况下,最好的方法是创建一个新表来跟踪喜欢。因此,假设您有 table posts
,其中有一列post_id
包含所有帖子(用户可以对其投票)。并且您有另一个users
带有 column 的表user_id
,其中包含所有用户。
您应该创建一个likes
至少有两列的表,例如like_postid
和like_userid
。现在,每次用户喜欢一个帖子时,都会在此表中创建一个新行,其中包含被喜欢的帖子的 id (post_id
from的值)和喜欢该帖子posts
的用户的 id ( from 的值user_id
) 。users
当然,您可以在likes
表中输入更多列(例如,跟踪何时创建了点赞)。
您在这里所拥有的称为多对多关系。谷歌它以获取有关它的更多信息并找到有关如何正确实施它们的更多建议(您会发现逗号分隔的 id 列表不是最佳实践之一)。
根据评论更新:如果我是正确的;您想获得对某位艺术家进行投票的所有用户(按名称排序)的列表。你应该这样做:
SELECT Artists.Name, User.Name
FROM Artists
JOIN Votes
ON Votes.page_ID = Artists.ID
JOIN Users
ON Votes.Votes_Userid = Users.User_ID
WHERE Artists.Name = "dfgdfg"
ORDER BY Users.Users_Name
这里有一件奇怪的事情;您的投票表中包含艺术家 ID 的列似乎被调用page_ID
。此外,您的列名有点不一致(不是很糟糕,但是如果您希望在将代码放置 6 个月后能够理解您的代码,请记住这一点)。在您的评论中,您说您只进行了一次连接,但实际上您进行了两次连接。如果您指定两个表名(就像您所做的那样:JOIN Users, Votes
SQL 实际上连接了这两个表。
根据您在评论中发布的查询,我可以告诉您没有太多使用联接的经验。我建议你阅读如何使用它们,它会真正提高你编写好代码的能力。