这是我的 php / MySQL 任务:
我有一个表格POSTS
,其中包含num
字段作为主要关键字以及有关帖子的其他信息字段(author
,title
等)。我还有一个表LIKE
,其中包含作为主键的userId
字段和与POST
中的num
字段对应的字段posts
。给定一个特定的userID
,我需要获取userId'喜欢'的POSTS
表中的所有行。
-num
- 作者
-title
-userId
-postId
这一切都在 php 中,所以我的第一个想法是从LIKES
表中获取userId
匹配给定的所有行,并将这些行存储在数组中。然后我将遍历数组,对于每一行,我将搜索POSTS
表where postId=POSTS.num
的行。但是,这似乎相当慢,特别是因为通过数组的每次迭代都是一个单独的mysql查询。
我假设有更快的方法。是使用临时表还是有更好的方法来加入表?我必须假设两个表都包含很多行。我是一个mysql新手,所以如果有更好的解决方案请解释为什么它更好。提前谢谢你的帮助!
答案 0 :(得分:0)
尝试以下查询:
SELECT
`posts`.*
FROM
`likes`
INNER JOIN
`posts` ON
`posts`.num = `likes`.postId
WHERE
`likes`.Userid = {insert user id here}
根据您的架构(不确定“赞”中的每条记录是否必须是唯一的,您可能需要在选择中使用DISTINCT
关键字来过滤掉重复项。
答案 1 :(得分:0)
SELECT poli.* FROM (
SELECT po.* FROM posts po
JOIN likes li
ON li.postId = po.num
WHERE li.userId = '$yourGivenUserId'
) AS poli
$ yourGivenUserId是给定的userId。