mysql加入两个表喜欢和帖子

时间:2012-12-25 21:55:36

标签: php mysql join mysqli

这是我的 php / MySQL 任务:

我有一个表格POSTS,其中包含num字段作为主要关键字以及有关帖子的其他信息字段(authortitle等)。我还有一个表LIKE,其中包含作为主键的userId字段和与POST中的num字段对应的字段posts。给定一个特定的userID,我需要获取userId'喜欢'的POSTS表中的所有行。

表1 - 帖子

-num
- 作者
-title

表2 - 喜欢

-userId
-postId


这一切都在 php 中,所以我的第一个想法是从LIKES表中获取userId匹配给定的所有行,并将这些行存储在数组中。然后我将遍历数组,对于每一行,我将搜索POSTSwhere postId=POSTS.num的行。但是,这似乎相当慢,特别是因为通过数组的每次迭代都是一个单独的mysql查询。

我假设有更快的方法。是使用临时表还是有更好的方法来加入表?我必须假设两个表都包含很多行。我是一个mysql新手,所以如果有更好的解决方案请解释为什么它更好。提前谢谢你的帮助!

2 个答案:

答案 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。