请教一个Mysql语句.

jxbbs 2005-12-07 09:43:07
我有两个数据表, 一个users表一个threads表. 要求找出users表中每个用户最新发表的主题的ID.
users表与threads与的对应关系是 users.uid对应threads.uid . threads表中的发表时间字段是dateline ,dateline的时间是以UNIX时间戳的方式保存的. 主题ID字段是tid . 请问这个SQL语句应该如何写? 我用

SELECT a.uid,b.tid FROM `users` AS a LEFT JOIN `threads` AS b USING(uid) group by a.uid ORDER BY b.dateline

这样找出的只是最先发表的主题ID,并不是最后发表的主题ID。

相关的数据表下载地址:
http://www.imphp.com/20051207/test.sql
...全文
88 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ice_berg16 2005-12-07
  • 打赏
  • 举报
回复
典型的组间最大值对应记录的问题,
一边来说MYSQL要分步来做,

不过根据分析,每个用户最新发表的主题的ID即为组间最大值

SELECT a.uid,max(b.tid) FROM `users` AS a LEFT JOIN `threads` AS b USING(uid) group by a.uid
ice_berg16 2005-12-07
  • 打赏
  • 举报
回复
典型的组间最大值对应记录的问题,
一边来说MYSQL要分步来做,

不过根据分析,每个用户最新发表的主题的ID即为组间最大值

SELECT a.uid,max(b.tid) FROM `users` AS a LEFT JOIN `threads` AS b USING(uid) group by a.uid
jxbbs 2005-12-07
  • 打赏
  • 举报
回复
二楼的. 这样是不可以的. 你试试就知道. ORDER BY只是对结果集进行排序并不能在挑选数据之前排序.
leyan728 2005-12-07
  • 打赏
  • 举报
回复
楼上正解.楼主想到了 orader排序,怎么就没有想到排序方式的问题?
coolstr 2005-12-07
  • 打赏
  • 举报
回复
SELECT a.uid,b.tid FROM `users` AS a LEFT JOIN `threads` AS b USING(uid) group by a.uid ORDER BY b.dateline DESC

//加上 desc 即可.

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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