假设我有一 table friend
user_1 | user_2
然后,假设我想看看这些 friend 在做什么,所以我检查帖子表和更新表
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?
最佳答案
帖子 ID |帖子标题 |发布消息 |用户 ID |时间戳 - Table_A
更新ID |标题 |用户 ID |时间戳 - Table_B
尝试以下查询
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 ,甚至可以多列
关于php - MySQL 循环或嵌套查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14665583/