MySQL循环或嵌套查询

时间:2013-02-02 19:25:36

标签: php mysql loops nested

说我有一个表朋友

user_1  |  user_2  

然后,说我想看看这些朋友一直在做什么,所以我查看帖子表和更新表

post_id  | post_title | post_message |  user_id | timestamp

update_id | title | userid | timestamp

我希望获得如下逻辑:获取朋友列表,浏览生成的朋友列表以查看他们是否添加了任何内容,按照最近的活动排序(时间戳)。

Select user_1 from friends where user_2 = '$my_userid'
union
Select user_2 from friends where user_1 = '$my_userid'

//now loop through each of these friends and check the update/post tables to see if they have added anything recently

我是否可以通过1个MySQL查询完成此操作,还是必须将其分解并使用PHP?

1 个答案:

答案 0 :(得分:1)

post_id | post_title | post_message | user_id |时间戳 - 表_A

update_id |标题| userid |时间戳 - 表_

尝试以下查询

SELECT A.*, B.* FROM Table_A AS A JOIN Table_B AS B ON B.userid = A.user_id
WHERE A.user_id IN (100,101,102) 
ORDER BY B.timestamp DESC;

A. * - 将从表A中获取所有列。如果您需要特定列A.post_id

您可以通过添加LIMIT子句来获得结果数。

注意:我假设100,101,102是生成的用户ID。您可以在IN子句中添加用户ID。

更新

如果要限制好友,请将您需要的用户ID放在IN子句中。如果不删除where子句,那么您可以无限制地获取所有朋友的更新。您可以按需要的任何列进行订购。您可以执行ORDER BY A.user_id,A.post_id,甚至可以使用多列