0

这是我的php/MySQL任务:

我有一个表POSTS,其中包含num作为主键的字段和有关帖子的其他信息字段(author、、title等)。我还有一个表LIKE,其中包含一个作为主键的userId字段和一个POSTnum. posts给定一个特定的userID,我需要从POSTS表中获取 userId“喜欢”的所有行。

表 1 - 职位

-num
-author
-title

表 2 - 喜欢

-userId
-postId


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

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

4

2 回答 2

0
SELECT poli.* FROM (
SELECT po.* FROM posts po 
JOIN likes li
ON li.postId = po.num
WHERE li.userId = '$yourGivenUserId'
) AS poli

$yourGivenUserId 是给定的用户 ID。

于 2012-12-25T22:20:53.413 回答
0

尝试以下查询:

SELECT
  `posts`.*
FROM
  `likes`
INNER JOIN
  `posts` ON
  `posts`.num = `likes`.postId
WHERE
  `likes`.Userid = {insert user id here}

根据您的架构(不确定“喜欢”中的每条记录是否必须是唯一的,您可能希望DISTINCT在您的选择中使用关键字来过滤掉重复项。

于 2012-12-25T22:02:18.857 回答