У меня возникла эта проблема, которую я просто не могу понять, и мне было интересно, есть ли у кого-нибудь информация об этом.
В настоящее время я запускаю приведенный ниже 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 основан на ответе Stackoverflow, который я нашел Здесь, но в основном я хочу, чтобы он показывал мне последние 6 игр, в которых участвовала каждая команда (дома или на выезде).
Странно то, что когда я запускаю это в MySQL, он будет работать в первом сеансе SQL, но сеансы, созданные после этого, будут возвращать совершенно разные результаты. Затем я могу удалить поле match_id из внешнего списка SELECT, и запрос вернется к своему обычному набору данных, пока снова не откроется другой сеанс... а затем возврат поля match_id покажет желаемые результаты, как для начала, начиная с нас в начало снова.
Я не уверен, что SQLFiddle, с которым я связался, воссоздаст проблему, но может ли кто-нибудь объяснить, почему это происходит?
Любая помощь очень ценится!
Кев
@teamCounter:=
в запросе, все становится рискованным. Вы можете попробовать установить для всех своих переменных значение null или 0 перед запуском. (например:set @teamCounter = 0
) - person   schedule 15.01.2014