С помощта на променливи и условия можете да нулирате брояча въз основа на условие (libraryId е променен). Задължително за подреждане по колоната 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;
Вторият оператор if се използва за групиране на две присвоявания заедно и връщане на @var_record.
if(@var_record := 1 and @libId := libraryId, @var_record, @var_record)