作者danielguo (Daniel Guo)
看板Database
标题Re: [SQL ] MySQL请问同时捞出任务基本资讯与执行뀠…
时间Sun Feb 27 04:22:33 2011
SELECT m.`name`, m.`length`, m.`level`, r.`result`, r.`spend_time`
FROM `record` r
INNER JOIN
(SELECT MAX(ai) AS `ai`
FROM `record` r
WHERE r.`result` = 1
GROUP BY r.`m_id`) r1
ON r.`ai` = r1.`ai`
INNER JOIN `mission` m
ON r.`m_id` = m.`id`
索引记得建 (id, m_id, result 等)
取第一个可以, 如果要取前 n 个的话就很麻烦, 参考:
http://goo.gl/nQtDW
※ 引述《jiyon (爱)》之铭言:
: 资料库版本 MySQL 5.1
: 说明:假设赛车游戏中各个赛道的基本资讯存在「任务」表格
: ,而每次跑某一个赛道的记录存在「记录」表格,如下表所示:
: mission(任务) record(记录)
: -------------------------------- ----------------------------------------
: ai id(PK) name length level ai id(PK) m_id(FK) result spend_time
: 赛道名 距离 难度 结果名次 花费时间
: -------------------------------- ----------------------------------------
: 其中ai是AUTO_INCREMENT栏位、id是UUID()产生的主键栏位
: record.m_id是参照到mission.id的外来键
: result是INT型态,表示第几名
: 每笔记录只会对应到一个任务,而一个任务会有多个跑的记录,也可能没有(还没跑)
: 测试资料如下:(id部份有简化)
: mission(任务)
: --------------------------------
: ai id(PK) name length level
: 1 d482 铃鹿赛道 28 2
: 2 d6b0 筑波赛道 36 4
: 3 d7a1 茂木赛道 20 1
: --------------------------------
: record(记录)
: ----------------------------------------
: ai id(PK) m_id(FK) result spend_time
: 1 7d24 d482 1 00:04:57 (对应到铃鹿赛道)
: 2 7dfa d7a1 8 00:10:23 (对应到茂木赛道)
: 3 51d8 d482 12 00:12:28 (对应到铃鹿赛道)
: 4 17d3 d7a1 1 00:06:11 (对应到茂木赛道)
: 5 5755 d7a1 1 00:05:59 (对应到茂木赛道)
: ----------------------------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 71.93.105.54
※ 编辑: danielguo 来自: 71.93.105.54 (02/27 04:25)
1F:推 jiyon:感谢。我想大概能抓到要领了,还有提供的网页说明很详细 02/27 15:46