我試圖用子查詢方法解決這個問題,但我得到了一種我無法理解的行為。
select score,
(select count(distinct s1.score) from scores s1
where s1.score > s2.score) 1 as 'rank'
from scores s2
order by s2.score desc;
上面的代碼運行完美,但是:
- 在查詢的第 3 行,如果我嘗試使用 rank 而不是 'rank' leetcode 編譯器會出錯。
- 在最后一行中,如果我嘗試按排名對其進行排序,則會顯示錯誤,而按分數排名則可以正常作業。
請解釋為什么會這樣。非常感謝您考慮我的要求。
uj5u.com熱心網友回復:
從 MySQL 8 開始,RANK已成為 MySQL 的保留關鍵字。這是因為 MySQL 8 引入了一個名為RANK. 所以,如果你想RANK用作別名,你應該在反引號或雙引號中轉義它:
SELECT score,
(SELECT COUNT(DISTINCT s1.score) FROM scores s1
WHERE s1.score > s2.score) 1 AS `rank`
FROM scores s2
ORDER BY `rank` DESC;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486977.html
下一篇:選擇僅包含2種產品的結果
