Theo liên kết bạn cung cấp, nó sẽ trông như thế này:
SELECT a.*,
(
CASE a.field1
WHEN @curType
THEN @curRow := @curRow + 1
ELSE @curRow := 1 AND @curType := a.field1 END
) + 1 AS rank
FROM table_a a,
(SELECT @curRow := 0, @curType := '') r
ORDER BY a.field1, a.field2 desc;
Đây là 2 fiddles, một cho oracle và một cho mySql dựa trên ví dụ từ liên kết bạn đã cung cấp:
- tiên tri
- Mysql