Mysql
 sql >> Database >  >> RDS >> Mysql

Numero di riga per i risultati della query raggruppati per colonna

Dovrebbe essere abbastanza semplice.

SELECT (CASE WHEN @fk <> fk_id THEN @row:=1 ELSE @row:[email protected] + 1 END) AS ordinality, 
       @fk:=fk_id, rcv_date
FROM   (SELECT @row:=0) AS r, 
       (SELECT @fk:=0) AS f, 
       (SELECT fk_id, rcv_date FROM files ORDER BY fk_id, rcv_date) AS t

Ho ordinato tramite fk_id prima per assicurarmi che tutte le tue chiavi esterne si uniscano (e se non fossero davvero nella tabella?), poi ho eseguito l'ordine preferito, ovvero per rcv_date . La query verifica la presenza di una modifica in fk_id e, se ce n'è una, la variabile del numero di riga viene impostata su 1, oppure la variabile viene incrementata. È gestito in caso di dichiarazione. Nota che @fk:=fk_id viene eseguito dopo il controllo del caso, altrimenti influirà sul numero di riga.

Modifica: Ho appena notato la tua soluzione che è stata la stessa che ho trovato io. Complimenti! :)