MySQL用户定义变量的结果如何变化?

时间:2014-01-14 20:37:05

标签: mysql sql variables defined

我遇到了这个我无法弄清楚的问题,我想知道是否有人有任何相关信息。

我目前正在运行以下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是否会重新创建问题,但有人可以解释为什么会这样吗?

任何帮助都非常感谢!

千电子伏

0 个答案:

没有答案