首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内部连接两个表,只显示最新记录(mySQL)

内部连接两个表,只显示最新记录(mySQL)
EN

Stack Overflow用户
提问于 2016-02-05 02:16:15
回答 2查看 738关注 0票数 0

我有两个父表,它们在子表中创建了一个复合表(compresults)

我想得到每名运动员的最新记录(只有1项)。

我知道答案是按照选择最大日期的竞争方式,只以这样的方式显示,但是我一直在尝试这样做,但我无法正确地设置格式。

家长表(运动员) +---------+-------+ | athlete | name | +---------+-------+ | 1 | James | | 2 | Gemma | +---------+-------+

家长表(比赛) +-----+----------+----------+ | cid | compname | compdate | +-----+----------+----------+ | 1 | Comp A | 2015 | | 2 | Comp B | 2014 | +-----+----------+----------+

子表(结果) +---------+-----+--------+ | athlete | cid | result | +---------+-----+--------+ | 1 | 1 | 500 | | 1 | 2 | 550 | | 2 | 2 | 450 | +---------+-----+--------+

预期结果:+-------+----------+--------+ | name | compname | result | +-------+----------+--------+ | James | Comp A | 500 | | Gemma | Comp B | 450 | +-------+----------+--------+

知道吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-05 03:26:52

我相信这会得到你想要的结果。

代码语言:javascript
复制
SELECT a.`name`, b.`compname`, c.`result`
FROM `compresults` c
INNER JOIN `competitions` b ON b.cid = c.cid
INNER JOIN `athletes` a ON c.`athlete` = a.`athlete`
WHERE b.`compdate` = (
                                    SELECT co.`compdate` 
                                    FROM `competitions` co INNER JOIN `compresults` cr ON cr.`cid` = co.`cid` 
                                    WHERE cr.`athlete` = a.`athlete`
                                    ORDER BY co.`compdate` DESC LIMIT 1
                    )
票数 0
EN

Stack Overflow用户

发布于 2016-02-05 02:34:34

试着使用

代码语言:javascript
复制
select b.name,c.compname,a.result from compresults a left join athletes 
b on (a.athlete)=b.athlete
left join competitions c on (a.cid)=c.cid
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35215222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档