sql - 使用连接限制结果而不计算连接结果?

标签 sql mysql database

不知道这是否可行,我正在寻找一个编写社交网络式代码但需要一点帮助。

SELECT wall.Wid, wall.uid, wall.wcomment, wall.name, comment.wid, comment.comment,comment.wid 
FROM wall 
LEFT JOIN comment ON wall.Wid=comment.wid 
WHERE wall.uid in (SELECT fid from friends where uid = 3) 

大家好

最佳答案

扩展为答案:

这在 SQL 中实际上并不容易,尤其是不限制墙贴和评论。你最好循环执行此操作,检索 x 个墙贴,然后为每个检索 y 个评论。这样您还可以缓存每个帖子的评论并保存每次检索它们。

你可以像这样限制墙贴的数量:

SELECT wall.Wid, wall.uid, wall.wcomment, wall.name, comment.wid, comment.comment, comment.wid
FROM wall LEFT JOIN comment ON wall.Wid=comment.wid 
WHERE wall.Wid in (SELECT Wid FROM wall WHERE wall.uid IN (SELECT fid from friends where uid = 3) LIMIT 0, 10)

请记住,这是非常低效的,因为对于每条评论,您都将检索墙贴,因此如果墙贴有 10 条评论,您将获得墙贴数据 10 次,每次都有不同的评论.我建议您使用缓存循环执行此操作。

关于sql - 使用连接限制结果而不计算连接结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2902677/

相关文章:

mysql - MyISAM 与 InnoDB

sql - 2 个更新查询同时运行

mysql - 向具有状态的多个列添加约束

sql - 如何在不使用LIMIT和OFFSET的情况下获得第二高的数字?

mysql - preg_replace 和 sql select 的奇怪行为

java - MySQL 和 Eclipse 错误

php - 拉拉维尔 : how to avoid time overlapping?

mysql - 更新 MySQL 中的 'ZERO' DATETIME 值

php - 提取 MySQL Blob 并添加到 PHP 数组?

Java 数据库添加到我删除的行?