我有兩張桌子
學生桌
| ID | 管理員 | 全名 |
|---|---|---|
| 1 | p001 | 約翰 |
| 2 | p002 | 簡 |
| 3 | p003 | 杰克 |
| 4 | p004 | 瓊 |
標記表
| ID | 管理員 | 學期 | 年 | 分數 |
|---|---|---|---|---|
| 1 | p001 | 第一學期 | 2021年 | 300 |
| 2 | p002 | 第一學期 | 2021年 | 400 |
| 3 | p003 | 第一學期 | 2021年 | 200 |
| 4 | P004 | 第一學期 | 2021年 | 700 |
預期成績
| ID | 管理員 | 全名 | 學期 | 年 | 分數 | 秩 |
|---|---|---|---|---|---|---|
| 4 | p004 | 瓊 | 第一學期 | 2021年 | 700 | 1 |
| 2 | p002 | 簡 | 第一學期 | 2021年 | 400 | 2 |
| 1 | p001 | 約翰 | 第一學期 | 2021年 | 300 | 3 |
| 3 | P003 | 杰克 | 第一學期 | 2021年 | 200 | 4 |
我的代碼
SET @curRank := 0;
SELECT
students.adminno,
students.fullname,
students.id,
students.adminno,
marks.term,
marks.year,
marks.total as total,
rank FROM
(SELECT
students.adminno,
students.fullname,
students.id,
marks.adminno,
marks.id,
marks.term,
marks.year,
marks.total as total,
@curRank := IF(@prevRank = total, @curRank, @incRank) AS rank,
@incRank := @incRank 1,
@prevRank := total
FROM marks p, (
SELECT @curRank :=0, @prevRank := NULL, @incRank := 1 )r
INNER JOIN students.adminno =marks.adminno
WHERE students.term='Term I'
ORDER BY total DESC ) s;
我收到此錯誤
ERROR 1248 (42000): 每個派生表都必須有自己的別名
如何正確連接兩個表以獲得我想要的結果。我是 mysql 的初學者
uj5u.com熱心網友回復:
SELECT total.*, @rank := @rank 1 AS student_rank
FROM ( SELECT *
FROM marks
JOIN students USING (id, adminno) ) total
CROSS JOIN ( SELECT @rank := 0 ) variable
ORDER BY total.marks DESC;
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=bc74b343be4722352c1a193bf2a709ea
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/363690.html
