求一个一对多两表关联,多的那个只要最新一条记录的SQL怎么写?

BILLSSJONE 2010-09-03 11:06:31
一个用户表user
一个发帖表log
一个用户有多个发帖,关联:userid=loguserid
列出用户名和最新发表的一个帖子,用户的排序按帖子时间排,
select * from user left join log on userid=loguserid

如果这样写呢帖子有多少就多少行,太重复了,我只按用户多少显示怎么写?
...全文
350 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
BILLSSJONE 2010-09-04
  • 打赏
  • 举报
回复
谢谢,第二条可以,第一条不知哪里有问题,运行就死掉了,好久都没响应
ACMAIN_CHM 2010-09-03
  • 打赏
  • 举报
回复
自己试一下不就知道了?
需要考虑你目前表上的索引和数据分布,否则无法回答哪个效率高。
BILLSSJONE 2010-09-03
  • 打赏
  • 举报
回复
哪个效率高一点?因为帖子很多,如果先left join所有帖了的表再处理就很慢,
ACMAIN_CHM 2010-09-03
  • 打赏
  • 举报
回复
select * 
from user a left join log b on a.userid=b.loguserid
where not exists (
select 1 from log
where loguserid=b.loguserid
and 帖子时间>b.帖子时间
)
ACMAIN_CHM 2010-09-03
  • 打赏
  • 举报
回复
select *
from (
select *
from user left join log on userid=loguserid
order by userid,帖子时间 desc
) t
group by userid
ACMAIN_CHM 2010-09-03
  • 打赏
  • 举报
回复
N=1

参考下贴中的多种方法

http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
[征集]分组取最大N条记录方法征集,及散分....

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧