Reputation: 1254
I have a student's table with the following fields:
student(student_id, student_name, student_avg)
I need to write a query in MySQL which will display the result as :
Serial no. => the result should also have a new column with serial number as 1,2,3,...,n
like an auto increment for each row in the result.
student_id
student_name
student_avg > 4
I don't want to alter my table in any way. All I have to do is write a query which will give me the above result. I hope I am clear.
Example data:
student_id student_name student_avg
1 abc 2.5
2 xyz 4.1
3 def 4.2
Sample output after querying:
serial_no student_id student_name student_avg
1 2 xyz 4.1
2 3 def 4.2
Upvotes: 13
Views: 52811
Reputation:
Try this on
SELECT @s:=@s+1 serial_number,student_id,student_name,student_avg
FROM students,
(SELECT @s:= 0) AS s
WHERE
student_avg > 4;
https://stackoverflow.com/a/11096550/1423506
Upvotes: 44
Reputation: 6696
SET @serial=0;
SELECT @serial := @serial+1 AS `serial_number`, `column_name` FROM `table_name`;
In your particular case:
SET @serial=0;
SELECT
@serial := @serial+1 AS `serial_number`,
`student_id`,
`student_name`,
`student_avg`
FROM
`students`
WHERE
`student_avg` > 4;
Upvotes: 11