将值添加到查询结果中

时间:2016-03-21 10:27:23

标签: mysql

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)

提前谢谢你:)

1 个答案:

答案 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;