在派生表中使用count时为什么会出现错误代码1064?

时间:2020-04-26 12:22:57

标签: mysql sql common-table-expression

我从派生表中的 count语句收到错误代码1064。我想从游戏表中计算出玩家在任何给定位置(发生次数:他玩过多少场游戏)中发生的次数。 我弄错了语法,似乎无法用Google搜索解释,因此解释和解决方案将非常有帮助。预先感谢。

SELECT 
    players.playerName AS Namn,
    players.playerNickName AS Smeknamn,
    players.playerBirthDate AS Födelsedatum,
    players.playerBirthPlace AS Födelseort,
    players.playerDeathDate AS Dödsdatum,
    players.playerDeathPlace AS Dödsort,
    players.playerOriginClub AS Moderklubb,
    players.playerProfession AS Yrke,
    players.playerCaps AS Landskamper,
    players.playerAllsvenskan AS Allsvensk_för_Gefle,
    CASE
        WHEN
            players.playerDeathDate IS NOT NULL
        THEN
            TIMESTAMPDIFF(YEAR,
                players.playerBirthDate,
                players.playerDeathDate)
        ELSE TIMESTAMPDIFF(YEAR,
            players.playerBirthDate,
            NOW())
    END AS År,
    players.playerCitizenship1 AS Medborgarskap1,
    players.playerCitizenship2 AS Medborgarskap2,
    players.playerRelations AS Släktskap,
    players.playerSports AS Andra_sporter,
    players.playerAltName AS Alternativt_namn,
    players.playerDeathReason AS Dödsorsak,
    CASE
        WHEN players.playerCoachID IS NOT NULL THEN 'Ja'
        ELSE 'Nej'
    END AS Gefletränare,
    CASE
        WHEN playerChairmanID IS NOT NULL THEN 'Ja'
        ELSE 'Nej'
    END AS Gefleordförande,
    players.playerPreviousClub1 AS Till_GIF_från_1,
    players.playerPreviousClubCountry1 AS Till_GIF_från_1_land,
    players.playerNextClub1 AS Från_GIF_till_1,
    players.playerNextClubCountry1 AS Från_GIF_till_1_land,
    players.playerPreviousClub2 AS Till_GIF_från_2,
    players.playerPreviousClubCountry2 AS Till_GIF_från_2_land,
    players.playerNextClub2 AS Från_GIF_till_2,
    players.playerNextClubCountry2 AS Från_GIF_till_2_land,
    players.playerPreviousClub3 AS Till_GIF_från_3,
    players.playerPreviousClubCountry3 AS Till_GIF_från_3_land,
    players.playerNextClub3 AS Från_GIF_till_3,
    players.playerNextClubCountry3 AS Från_GIF_från_1_land,
    players.playerMisc AS Kuriosa,
    player, count(*) from (SELECT 
    games.gamePos1 AS player
FROM
    games 
UNION ALL SELECT 
    games.gamePos2 AS player
FROM
    games
    UNION ALL SELECT 
    games.gamePos3 AS player
FROM
    games
    UNION ALL SELECT 
    games.gamePos4 AS player
FROM
    games
    UNION ALL SELECT 
    games.gamePos5 AS player
FROM
    games
    UNION ALL SELECT 
    games.gamePos6 AS player
FROM
    games
    UNION ALL SELECT 
    games.gamePos7 AS player
FROM
    games
    UNION ALL SELECT 
    games.gamePos8 AS player
FROM
    games
    UNION ALL SELECT 
    games.gamePos9 AS player
FROM
    games
    UNION ALL SELECT 
    games.gamePos10 AS player
FROM
    games
    UNION ALL SELECT 
    games.gamePos11 AS player
FROM
    games
    UNION ALL SELECT 
    games.gameSub1 AS player
FROM
    games
    UNION ALL SELECT 
    games.gameSub2 AS player
FROM
    games
    UNION ALL SELECT 
    games.gameSub3 AS player
FROM
    games) Matcher group by player,
players.playerNote AS Anteckning
FROM
    games
        INNER JOIN
    players ON players.playerName = games.gamePos1
        OR players.playerName = games.gamePos2
        OR players.playerName = games.gamePos3
        OR players.playerName = games.gamePos4
        OR players.playerName = games.gamePos5
        OR players.playerName = games.gamePos6
        OR players.playerName = games.gamePos7
        OR players.playerName = games.gamePos8
        OR players.playerName = games.gamePos9
        OR players.playerName = games.gamePos10
        OR players.playerName = games.gamePos11
        OR players.playerName = games.gameSub1
        OR players.playerName = games.gameSub2
        OR players.playerName = games.gameSub3
GROUP BY players.playerID
ORDER BY players.playerName

1 个答案:

答案 0 :(得分:0)

您的问题取决于您自己(*)从所有播放器中来看,语法是错误的。

尝试但没有数据和想要的结果,我只修复了语法错误

    SELECT 
        players.playerName AS Namn,
        players.playerNickName AS Smeknamn,
        players.playerBirthDate AS Födelsedatum,
        players.playerBirthPlace AS Födelseort,
        players.playerDeathDate AS Dödsdatum,
        players.playerDeathPlace AS Dödsort,
        players.playerOriginClub AS Moderklubb,
        players.playerProfession AS Yrke,
        players.playerCaps AS Landskamper,
        players.playerAllsvenskan AS Allsvensk_för_Gefle,
        CASE
            WHEN
                players.playerDeathDate IS NOT NULL
            THEN
                TIMESTAMPDIFF(YEAR,
                    players.playerBirthDate,
                    players.playerDeathDate)
            ELSE TIMESTAMPDIFF(YEAR,
                players.playerBirthDate,
                NOW())
        END AS År,
        players.playerCitizenship1 AS Medborgarskap1,
        players.playerCitizenship2 AS Medborgarskap2,
        players.playerRelations AS Släktskap,
        players.playerSports AS Andra_sporter,
        players.playerAltName AS Alternativt_namn,
        players.playerDeathReason AS Dödsorsak,
        CASE
            WHEN players.playerCoachID IS NOT NULL THEN 'Ja'
            ELSE 'Nej'
        END AS Gefletränare,
        CASE
            WHEN playerChairmanID IS NOT NULL THEN 'Ja'
            ELSE 'Nej'
        END AS Gefleordförande,
        players.playerPreviousClub1 AS Till_GIF_från_1,
        players.playerPreviousClubCountry1 AS Till_GIF_från_1_land,
        players.playerNextClub1 AS Från_GIF_till_1,
        players.playerNextClubCountry1 AS Från_GIF_till_1_land,
        players.playerPreviousClub2 AS Till_GIF_från_2,
        players.playerPreviousClubCountry2 AS Till_GIF_från_2_land,
        players.playerNextClub2 AS Från_GIF_till_2,
        players.playerNextClubCountry2 AS Från_GIF_till_2_land,
        players.playerPreviousClub3 AS Till_GIF_från_3,
        players.playerPreviousClubCountry3 AS Till_GIF_från_3_land,
        players.playerNextClub3 AS Från_GIF_till_3,
        players.playerNextClubCountry3 AS Från_GIF_från_1_land,
        players.playerMisc AS Kuriosa,
        player, 
        (select count(*) from (SELECT 
                    games.gamePos1 AS player
                FROM
                    games 
            UNION ALL 
                SELECT 
                    games.gamePos2 AS player
                FROM
                    games
            UNION ALL 
                SELECT 
                    games.gamePos3 AS player
                FROM
                    games
            UNION ALL 
                SELECT 
                    games.gamePos4 AS player
                FROM
                    games
            UNION ALL 
                SELECT 
                    games.gamePos5 AS player
                FROM
                    games
            UNION ALL 
                SELECT 
                    games.gamePos6 AS player
                FROM
                    games
            UNION ALL 
                SELECT 
                    games.gamePos7 AS player
                FROM
                    games
            UNION ALL 
                SELECT 
                    games.gamePos8 AS player
                FROM
                    games
            UNION ALL 
                SELECT 
                    games.gamePos9 AS player
                FROM
                    games
            UNION ALL 
                SELECT 
                    games.gamePos10 AS player
                FROM
                    games
                UNION ALL 
            SELECT 
                    games.gamePos11 AS player
                FROM
                    games
            UNION ALL 
                SELECT 
                    games.gameSub1 AS player
                FROM
                    games
            UNION ALL 
                SELECT 
                    games.gameSub2 AS player
                FROM
                    games
            UNION ALL 
                SELECT 
                games.gameSub3 AS player
                FROM
                    games group by player) t1 ) Matcher 
        ,
players.playerNote AS Anteckning
FROM
    games
        INNER JOIN
    players ON players.playerName = games.gamePos1
        OR players.playerName = games.gamePos2
        OR players.playerName = games.gamePos3
        OR players.playerName = games.gamePos4
        OR players.playerName = games.gamePos5
        OR players.playerName = games.gamePos6
        OR players.playerName = games.gamePos7
        OR players.playerName = games.gamePos8
        OR players.playerName = games.gamePos9
        OR players.playerName = games.gamePos10
        OR players.playerName = games.gamePos11
        OR players.playerName = games.gameSub1
        OR players.playerName = games.gameSub2
        OR players.playerName = games.gameSub3
GROUP BY players.playerID
ORDER BY players.playerName