一对多表查询,查多表id最大一条纪录

chinayuy 2015-05-07 04:51:45
admin,管理员表,admin的id对应admin_log中的a_id

admin_log,管理登陆日志

admin
--------------------------------
id username
--------------------------------
1 test
2 ceshi
3 wan

admin_log
---------------------------------
id a_id log
---------------------------------
1 1 登陆了1
2 1 登陆了2

要求查询出所有的admin,及admin_log中最大纪录,注意,admin表中ceshi在admin_log中还没有对应纪录
查询出如下格式

--------------------------------
id username log
--------------------------------
1 test 登陆了2
2 ceshi null
3 wan null

用一条sql语句,有几种查询法呢?用left join?还是子查询?
学艺不精,望大神不舍赐教
...全文
352 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2015-05-07
  • 打赏
  • 举报
回复
参考下贴中的多种方法 http://blog.csdn.net/acmain_chm/article/details/4126306 [征集]分组取最大N条记录方法征集,及散分....
chinayuy 2015-05-07
  • 打赏
  • 举报
回复
大神,满眼泪,终于解决了 select * from admin a left join (select log,max(id) from admin_log group by a_id) b on a.id = b.a_id 版主,十分感谢……
chinayuy 2015-05-07
  • 打赏
  • 举报
回复
引用 9 楼 ACMAIN_CHM 的回复:
[quote=引用 6 楼 chinayuy 的回复:] select admin.*, admin_log.* from admin left join admin_log on admin.id = admin_log.a_id group by admin_log.a_id 只能查出两条纪录,很奇怪
这个语句是参加那个贴子中的哪个例子?[/quote] 好吧,大神,我再学习,你不要说正确答案,我自己学习着解决。
ACMAIN_CHM 2015-05-07
  • 打赏
  • 举报
回复
引用 6 楼 chinayuy 的回复:
select admin.*, admin_log.* from admin left join admin_log on admin.id = admin_log.a_id group by admin_log.a_id 只能查出两条纪录,很奇怪
这个语句是参加那个贴子中的哪个例子?
chinayuy 2015-05-07
  • 打赏
  • 举报
回复
我又试了 select admin.*,admin_log.* form admin left join admin_log on admin.id = admin_log.a_id group by admin.id 但是,admin_log不是最新的纪录
chinayuy 2015-05-07
  • 打赏
  • 举报
回复
接上,而且admin_log不是最新的 接着继续更改 select admin.*, admin_log.* from admin left join admin_log on admin.id = admin_log.a_id group where admin_log.id in (select max(admin_log.id) from admin_log) 这样只能查出一条纪录,就是admin_log有纪录的,这肯定不对
chinayuy 2015-05-07
  • 打赏
  • 举报
回复
select admin.*, admin_log.* from admin left join admin_log on admin.id = admin_log.a_id group by admin_log.a_id 只能查出两条纪录,很奇怪
ACMAIN_CHM 2015-05-07
  • 打赏
  • 举报
回复
你用的语句是什么? 贴出来,这样大家可以看哪写错了。
chinayuy 2015-05-07
  • 打赏
  • 举报
回复
引用 3 楼 ACMAIN_CHM 的回复:
楼主可以先做 left join 查询,然后在这个left join 基础上使用分组查询。
我查了一下,要么查出来都 test的纪录,要么就是没有test的纪录
ACMAIN_CHM 2015-05-07
  • 打赏
  • 举报
回复
楼主可以先做 left join 查询,然后在这个left join 基础上使用分组查询。
chinayuy 2015-05-07
  • 打赏
  • 举报
回复
引用 1 楼 ACMAIN_CHM 的回复:
参考下贴中的多种方法 http://blog.csdn.net/acmain_chm/article/details/4126306 [征集]分组取最大N条记录方法征集,及散分....
您发的地址我看了,分组选择是没有问题,问题是我是两表联查 而且,admin表的某条纪录,在admin_log里並沒有……

56,677

社区成员

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

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