CREATE TABLE tblstud
(
Student_ID
VARCHAR(15)NOT NULL DEFAULT'',
Last_Name
VARCHAR(30)DEFAULT NULL,
First_Name
VARCHAR(30)DEFAULT NULL,
Middle_Name
VARCHAR(30)DEFAULT NULL,
Complete_Address
VARCHAR(100)DEFAULT NULL,
CP_No._of_Student
VARCHAR(15)DEFAULT NULL,
Date_Of_Birth
VARCHAR(30)DEFAULT NULL,
Age
INT(2)DEFAULT NULL,
Sex
SET('男','女')DEFAULT NULL,
Place_Of_Birth
VARCHAR(100)DEFAULT NULL,
Status
VARCHAR(30)DEFAULT NULL,
Grade_Level
INT(2)DEFAULT NULL,
Average_Grade
INT(10)DEFAULT NULL,
Elementary_School_Attended
VARCHAR(100)DEFAULT NULL,
ElemSY
VARCHAR(30)DEFAULT NULL,
High_School_Last_Attended
VARCHAR(100)DEFAULT NULL,
HighSchoolSY
VARCHAR(30)DEFAULT NULL,
Name_of_Parent/Guardian
VARCHAR(30)DEFAULT NULL,
Occupation
VARCHAR(30)DEFAULT NULL,
Address_of_Parent/Guardian
VARCHAR(100)DEFAULT NULL,
CP_No._of_Parent/Guardian
VARCHAR(15)DEFAULT NULL,
Section
VARCHAR(5)DEFAULT NULL,
主要关键(Student_ID
)
)ENGINE = INNODB DEFAULT CHARSET = latin1
我想编写一个查询,根据平均等级显示第4至第6条记录,并将其标记为“A”部分。
我正在使用mysql,这是我的代码:
UPDATE tblstud SET Section = 'A'
FROM (SELECT * FROM tblstud ORDER BY Average_Grade DESC LIMIT 3 OFFSET)
提前谢谢你:)
答案 0 :(得分:0)
试试这个:
UPDATE tblstud t1 INNER JOIN
(SELECT *, @rn := @rn + 1 AS row_num
FROM tblstud CROSS JOIN (SELECT @rn := 0) param
ORDER BY Average_Grade DESC) t2
ON t1.name = t2.name
SET t1.Section = 'A'
WHERE t2.row_num BETWEEN 4 AND 6;