SQL Query显示来自同一个表的多个记录?

时间:2011-11-28 21:52:19

标签: mysql sql

我正在为一家小型初创大学体育招聘公司创建一个数据库。基本上我要做的就是在校队级别上拉高中两年的球员统计数据,并在可能的情况下将它们显示在一行中。 (我知道这听起来很混乱,但是为了商业网站发布者我们使用它对我来说更容易创建它。)示例表结构如下所示:

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的新手,所以非常感谢任何帮助。

3 个答案:

答案 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;

如果你需要一种更灵活的方式,你可以随时使用子查询,但我想你会想要在脚本端而不是在数据库中进行这种重组。关系数据库对这种非结构化数据表现不佳。