2012-08-08 10 views
12

tengo la mesa de un estudiante con los siguientes campos:MySQL consulta para seleccionar los resultados con incremento automático como una nueva columna añadida en el resultado

student(student_id, student_name, student_avg) 

Tengo que escribir una consulta en MySQL que mostrará el resultado como :

Número de serie. => el resultado también debe tener una nueva columna con número de serie como 1,2,3,...,n como un incremento automático para cada fila en el resultado.

student_id 
student_name 
student_avg > 4 

No quiero alterar mi tabla de ninguna manera. Todo lo que tengo que hacer es escribir una consulta que me dará el resultado anterior. Espero que esté claro.

datos Ejemplo:

student_id   student_name  student_avg 
1     abc    2.5 
2     xyz    4.1 
3     def    4.2  

salida muestra después de la consulta:

serial_no student_id student_name  student_avg 
    1    2   xyz    4.1 
    2    3   def    4.2 
+0

favor pegar mesa de UR y probar hacia fuera puesta –

+0

student_id student_name student_avg 1 abc 2,5 2 xyz 4.1 3 def 4.2 muestra serial_no salida student_id student_name student_avg 1 2 xyz 4.1 2 3 def 4,2 – Aayush

Respuesta

40

Pruebe esto en

SELECT @s:[email protected]+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

+0

Muchas gracias me salvaste el tiempo :) – Aayush

+1

Encontré algo similar antes. Sin embargo, hay un problema para mí: cuando combino esto con otro 'orden por', la numeración incremental ya no se ordena, se aplica antes del orden aparentemente. ¿Alguna idea? – fluxon

9
SET @serial=0; 
SELECT @serial := @serial+1 AS `serial_number`, `column_name` FROM `table_name`; 

En su caso particular:

SET @serial=0; 

SELECT 
    @serial := @serial+1 AS `serial_number`, 
    `student_id`, 
    `student_name`, 
    `student_avg` 
FROM 
    `students` 
WHERE 
    `student_avg` > 4; 
+1

Gracias funciona igual bien para mí :) – Aayush

Cuestiones relacionadas