mysql 连表查询 只要多表中的最后一条记录

表1(用户表)idname01张三02李四表2(登录日志表)iduser_idlog_time1012014.3.12012014.3.23012014.3.3想要输出这... 表1(用户表)
id name
01 张三
02 李四

表2(登录日志表)
id user_id log_time
1 01 2014.3.1
2 01 2014.3.2
3 01 2014.3.3

想要输出这样一条记录
name log_time
张三 2014.3.3

就是说我只要登录日志表中的最后一次登录时间
我是这么写的 select a.name, b.log_time from 表1 as a, 表2 as b group by a.id
但是这条执行的结果只有输出第一次登录的时间,我要的结果要怎么写呢,注意不使用子查询,就使用连表查询
我想我表达错了,或没表达清楚,应该是这样
表2(评论表)
id user_id time content
1 01 2014.3.1 abcd1
2 01 2014.3.2 abcd2
3 02 2014.3.3 aaaa1
4 01 2014.3.3 abcd3
5 02 2014.3.3 aaaa2
6 02 2014.3.3 aaaa3

我要的这样一张表
name content
张三 abcd3
李四 aaaa3

我要的就是最后一条评论内容组成的一张新表,不用子查询
展开
 我来答
百度网友4b68195
2014-03-18 · TA获得超过1520个赞
知道大有可为答主
回答量:1773
采纳率:100%
帮助的人:1723万
展开全部
select    a.name, c.content
from  表1 as a, 
(select user_id, max(log_time) as lt from 表2 group by     )  b,
表2 c
where a.user_id=b.user_id  and b.user_id=c.user_id and b.lt=c.log_time
heyongsai
推荐于2017-12-16 · TA获得超过1184个赞
知道小有建树答主
回答量:472
采纳率:0%
帮助的人:300万
展开全部
select a.name, max(b.log_time) from 表1 as a, 表2 as b
where a.id = b.user_id group by a.name

根据您最新的需求,SQL修改如下,保证查询效率没的说:
select
a.id,
a.name,
max(b.log_time),
(
select c.content
from 表2 as c where c.user_id = a.id
order by id desc limit 0,1
) as content
from 表1 as a, 表2 as b where a.id = b.user_id group by a.id, a.name
解释:因为您给出的log_time截止到日了,这意味着某天出现多条记录的话,这个日期就说明不了问题了,那我们不妨通过走id倒序的捷径,来取出最新的评论内容。
追问
使用一条子查询来读取content的数据,那如果我还要再读取表2中与content对应的其它字段,岂不是还要多几条子查询,有没不用子查询的方法呢
追答
我仅是按照您第二次贴出来的需要的表的样式给出的最效率的SQL。
如果您要除content外的表2其他字段,按照您的需求,我第二次提供的SQL是不合适的,且不使用子查询是不可能完成的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jyg0124
2014-03-18 · TA获得超过321个赞
知道小有建树答主
回答量:187
采纳率:0%
帮助的人:70.8万
展开全部
select a.name,b.log_time from 表1 as a, 表2 as b

where a.id = b.user_id order by b.log_time desc limit 1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式