変数と条件を使用すると、条件に基づいてカウンターをリセットできます(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;
2番目のifステートメントは、2つの割り当てをグループ化し、@var_recordを返すために使用されます。
if(@var_record := 1 and @libId := libraryId, @var_record, @var_record)