Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mysql select ordinal

À l'aide de variables et de conditions, vous pouvez réinitialiser le compteur en fonction d'une condition (libraryId a changé). Obligatoire pour trier par la colonne libraryId.

SELECT books.*, 
    if( @libId = libraryId, 
        @var_record := @var_record + 1, 
        if(@var_record := 1 and @libId := libraryId, @var_record, @var_record)
    ) AS Ordinal 
FROM books
JOIN (SELECT @var_record := 0, @libId := 0) tmp
ORDER BY libraryId;

La deuxième instruction if est utilisée pour regrouper deux affectations et renvoyer @var_record.

if(@var_record := 1 and @libId := libraryId, @var_record, @var_record)