2012-11-25 13 views
12

Assumere Ho query SQL come questo:Come aggiungere ROW INDEX come colonna alla query SQL SELECT?

SELECT id, name, index(not a real column) FROM users ORDER BY rating DESC 

voglio aggiungere colonna colonne selezionate che rappresenteranno l'indice del record.

Esempio:

id name rating 
1  a  4 
2  b  2 
3  c  8 
4  d  5 

Per questo tavolo voglio ottenere:

id name rating index 
3  c  8  1 
4  d  5  2 
1  a  4  3 
2  b  2  4 
+0

modo che si desidera il numero di riga all'interno della tabella dei risultati? –

+0

Non manca qualcosa nella frase che descrivi brevemente il tuo requisito? "aggiungi colonna alle colonne selezionate ..." NVM Ho capito cosa intendi. È necessario il numero di indice della riga della tabella risultante. – bonCodigo

+0

qual è l'indice del record? – sashkello

risposta

14

Provare quanto segue per ottenere il row_index:

set @row_num = 0; 
SELECT id,name,rating, @row_num := @row_num + 1 as row_index FROM users 
ORDER BY rating desc; 
+0

Ha funzionato, ma sembra che non ci sia una soluzione elegante per questo. –

+0

Quanto sei elegante alla ricerca di Yarin? :) Mi sto anche chiedendo cosa intendessi per "minimo di caratteri in questa textarea" ... – bonCodigo

+0

Stavo cercando qualcosa come la funzione INDICE(). Per quanto riguarda la cosa "minima", si riferisce alla convalida StackOverflow su textarea quando si aggiungono commenti: P –

1

Qualcosa di simile set @cnt=0; select *, @cnt:[email protected]+1 from users order by rating desc;

dovrebbe fare il lavoro (sarà necessario impostare @cnt prima ogni query)

Problemi correlati