mysql存储过程?
我有一份20支球队的名单和360场比赛。此表格为表2: 团队mysql存储过程?,mysql,sql,stored-procedures,Mysql,Sql,Stored Procedures,我有一份20支球队的名单和360场比赛。此表格为表2: 团队 身份证 名字 固定设施 身份证 主队 宅基地 阿瓦泰姆 awayscore 日期时间 基本上,我想尝试对每个团队进行计算,并将其存储在数据库中。它将使用fixtures表中的所有数据并创建以下内容: 可能的存储过程 球队名称,最近5场主场比赛的主场胜利数,最后5场主场比赛的平局数,最后5场客场比赛的平局数,最后5场客场比赛的客场胜利数 我想将此数据用作每个团队的当前表单,由于此数据将在我的网站中的许多地方使用,我真的需要找出最
- 身份证
- 名字
- 身份证
- 主队
- 宅基地
- 阿瓦泰姆
- awayscore
- 日期时间
我想将此数据用作每个团队的当前表单,由于此数据将在我的网站中的许多地方使用,我真的需要找出最佳方法。可以在一个查询中完成,您需要两个连接:
SELECT t.name,
SUM(IF(f_h.homescore > f_h.awayscore, 1, 0)) AS HomeWins,
SUM(IF(f_h.homescore = f_h.awayscore, 1, 0)) AS HomeDraws,
SUM(IF(f_a.awayscore > f_a.homescore, 1, 0)) AS AwayWins,
SUM(IF(f_a.awayscore = f_a.homescore, 1, 0)) AS AwayDraws
FROM team t
LEFT JOIN fixtures f_h ON f_h.hometeam = t.id AND f_h.id IN (
SELECT id
FROM fixtures
WHERE hometeam = t.id
ORDER BY datetime DESC
LIMIT 5)
LEFT JOIN fixtures f_a ON f_a.awayteam = t.id AND f_a.id IN (
SELECT id
FROM fixtures
WHERE awayteam = t.id
ORDER BY datetime DESC
LIMIT 5)
GROUP BY t.name
只需要子选择来获取最后5个装置 存储过程是可维护性和性能的敌人。如果可能的话,尽量避免。我在第二行发现了一个错误,我似乎无法准确地计算出你到底做了什么。有什么想法吗?对不起,忘了IF语句中的括号。编辑了这个查询,现在就试试。非常感谢你在这方面的帮助:)我也在使用mysql 5.0.92,我认为IN语句不起作用,我想你不知道有什么替代方法吗?是的,IN语句必须在mysql 5.0上工作。x:再次感谢你的帮助。我得到一个错误:这个版本的mysql还不支持LIMIT&在/ALL/ANY/SOME子查询中。我认为这是因为IN不受支持:(