我正在为一家小型初创大学体育招聘公司创建一个数据库。基本上我要做的就是在校队级别上拉高中两年的球员统计数据,并在可能的情况下将它们显示在一行中。 (我知道这听起来很混乱,但是为了商业网站发布者我们使用它对我来说更容易创建它。)示例表结构如下所示:
Player ID, YearId, Points
10, 2010, 120
11, 2010, 90
10, 2011, 160
11, 2011, 173
期望的结果:
10, 2010, 120, 2011, 160
11, 2010, 90, 2011, 173
我是MySQL的新手,所以非常感谢任何帮助。
答案 0 :(得分:2)
这将使您在前两年滚动,使用当前年份和之前的查询运行时自动执行:
SELECT p.PlayerId, p.YearId AS PreviousYear, p.Points AS PreviousPoints
, p2.YearId AS CurrentYear, p2.Points AS CurrentPoints
FROM Player AS p
LEFT JOIN Player AS p2 ON p.PlayerId = p2.PlayerId
AND p.YearId = p2.YearId - 1
WHERE p2.YearId = YEAR(NOW())
答案 1 :(得分:1)
select
playerid,group_concat(concat_ws(',',yearid,points) order by yearid) as merged
from table
where yearid >= year(curdate() - interval 1 year)
group by playerid
答案 2 :(得分:0)
如果你真的只需要两年时间,你可以加入:
SELECT t1.playerid,t1.yearid,t1.points,t2.yearid.t2.points
FROM table t1
LEFT JOIN table t2
ON t1.playerid = t2.playerid
WHERE t1.yearid = 2010 AND t2.yearid = 2011;
如果你需要一种更灵活的方式,你可以随时使用子查询,但我想你会想要在脚本端而不是在数据库中进行这种重组。关系数据库对这种非结构化数据表现不佳。