Sử dụng các biến và điều kiện, bạn có thể đặt lại bộ đếm dựa trên một điều kiện (libraryId đã thay đổi). Bắt buộc phải sắp xếp theo thư viện cột.
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;
Câu lệnh if thứ hai được sử dụng để nhóm hai bài tập lại với nhau và trả về @var_record.
if(@var_record := 1 and @libId := libraryId, @var_record, @var_record)