簡體   English   中英

查詢語法問題從5.7升級到mysql 8

[英]query syntax issue upgrading to mysql 8 from 5.7

我有此sql查詢,可在mysql服務器5.7中使用,但升級到8.0.12版后將無法使用

SELECT sID, FNames, total, grade, h_score, l_score, stud_per_sub, RANK FROM 
(SELECT k.sID, concat(s.surName,'  ', s.firstName,'  ', s.oNames) AS 
'FNames', k.total, k.h_score, k.stud_per_sub, k.l_score, k.grade, @curRank 
:= if(@prevRank = k.total, @curRank, @incRank) AS rank, @incRank := @incRank 
+ 1, @prevRank := k.total FROM terminal_assessment k LEFT JOIN student s ON 
(s.studentID = k.sID), (SELECT @curRank := 0, @prevRank := null, @incRank := 
1) r WHERE k.subj_TeacherID=:sid AND k.session=:sess AND k.classID=:cid AND 
k.term=:trm AND k.subid=:subject ORDER BY k.total desc) AS m;

它給出了此錯誤信息

(錯誤代碼:1064。您的SQL語法有誤;請查看與您的MySQL服務器版本相對應的手冊,以獲取正確的語法,以在'from [select k.sID,concat(s.surName,'',s .firstName,'',s.oNames)AS'FName'在第1行)

每次我嘗試運行它

RANK是從MYSQL 8.0.2(升級到的版本)開始的保留字。 這就是為什么您得到錯誤的原因。

解決方法很簡單,只需在RANK周圍添加反引號`。

您可以在此處找到更多詳細信息嘗試讀取mysql錯誤消息時,應始終查看消息從何處開始之前的內容。

我試圖修復我遇到的一些語法錯誤,從而瀏覽了您的代碼。 不知道它能否使它工作,但這至少是一個開始。

您還應該格式化/縮進代碼,以使其更易於閱讀。 由於控制台會在格式正確的示例中准確告訴您問題所在的哪行,這也將使調試更加容易。

SELECT
    m.sID, 
    m.FNames,
    m.total,
    m.grade,
    m.h_score,
    m.l_score,
    m.stud_per_sub,
    m.`RANK`
FROM 
(
    SELECT
        k.sID,
        concat(s.surName,'  ', s.firstName,'  ', s.oNames) AS FNames,
        k.total,
        k.h_score,
        k.stud_per_sub,
        k.l_score,
        k.grade,
        @curRank  := if(@prevRank = k.total, @curRank, @incRank) AS `RANK`,
        @incRank  := @incRank + 1,
        @prevRank := k.total
    FROM
        terminal_assessment k
    LEFT JOIN
        student s ON
        (s.studentID = k.sID),
        (SELECT @curRank := 0, @prevRank := null, @incRank := 1) r 
    WHERE 
        @sid     := k.subj_TeacherID
    AND @sess    := k.session
    AND @cid     := k.classID
    AND @trm     := k.term
    AND @subject := k.subid
    ORDER BY k.total desc
) AS m;

我至少沒有得到任何使用此語法錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM