mysql语句连接查询时多对一,选取特定条数的问题.
迷茫
迷茫 2017-04-17 14:22:54
[MySQL讨论组]

以下详情:
有两个表 :
表T为基本信息,ID NAME 等字段;
表S有 ID TID TIME等字段;
两表关系是 S表依T表而存
S内的TID字段为表T的ID,S内的每一个字段必定对应T表内的一个字段,而T表却可能对应一条或多条S表字段,但也可能没有S表字段与之对应。
现在的sql语句为

SELECT t.id,t.name,s.id,s.time FROM t left join s on t.id=s.tid group by t.id order by t.id;

有需求,联表查询两个表,T left join S group by T.ID 要求结果中如果有s.time字段,要最大的那一个。
而现在只能查出来第一个TIME字段。
难于T字段不一定有S表字段,所以没法用order by s.time。。。求大神给个方案。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(2)
怪我咯

select
t.id as tid, t.name , s.id as sid, s.time as stime
from t 
left join (
select tid, max(time) as time from s group by tid
) as s on t.id=s.tid
PHP中文网

先排序s表,然后聚合group by tid,再join。。逻辑上是这样,可以适度优化

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号