我遇到了这个我无法弄清楚的问题,我想知道是否有人有任何相关信息。
我目前正在运行以下SQL(在类似于此处的架构中:demo)...
SELECT match_id, team, date, hometeam, awayteam, FTHG, FTAG, `2.5 goals`
FROM (
SELECT
match_id, team, TEMP.date, hometeam, awayteam, FTHG, FTAG,
@teamCounter:=IF(@prevHome=team,@teamCounter+1,1) teamCounter,
@prevHome:=team,
CASE WHEN FTHG + FTAG < 2.5 THEN 'UNDER'
ELSE 'OVER'
END AS `2.5 goals`
FROM TEMP
JOIN (
SELECT DISTINCT date, hometeam team
FROM TEMP
UNION
SELECT DISTINCT date, awayteam
FROM TEMP
ORDER BY team, date DESC
) allgames
ON TEMP.date = allgames.date
AND (TEMP.hometeam = allgames.team
OR TEMP.awayteam = allgames.team)
JOIN (SELECT @teamCounter:=0) t
ORDER BY team, TEMP.date DESC
) t
WHERE teamCounter <= 6
ORDER BY team, date;
SQL基于我发现的Here的Stackoverflow答案,但基本上我希望它向我展示每个团队参与的最后6场比赛(无论是回家还是离开)。
奇怪的是,当我在MySQL中运行它时,它将在第一个SQL会话中工作,但之后创建的会话将返回截然不同的结果。然后我可以从外部SELECT列表中删除match_id字段,查询将返回到它的普通数据集,直到再次打开另一个会话...然后返回match_id字段将显示所需的结果,从开始我们开始重新开始。
我不确定我链接到的SQLFiddle是否会重新创建问题,但有人可以解释为什么会这样吗?
任何帮助都非常感谢!
千电子伏