Để có một số hàng có ý nghĩa, bạn cần phải sắp xếp các kết quả của mình. Sau đó, bạn có thể làm điều gì đó như sau:
SELECT id, name
, (SELECT COUNT(*) FROM people p2 WHERE name='Spiewak' AND p2.id <= p1.id) AS RowNumber
FROM people p1
WHERE name = 'Spiewak'
ORDER BY id
Lưu ý rằng mệnh đề WHERE của truy vấn phụ cần khớp với mệnh đề WHERE hoặc khóa chính từ truy vấn chính và ORDER BY của truy vấn chính.
SQL Server có cấu trúc ROW_NUMBER () OVER để đơn giản hóa điều này, nhưng tôi không biết MySQL có điều gì đặc biệt để giải quyết nó hay không.
Vì bài đăng của tôi ở đây đã được chấp nhận là câu trả lời, nên tôi cũng muốn nêu ra phản hồi của Dan Goldstein, cách tiếp cận rất giống nhưng sử dụng JOIN thay vì truy vấn phụ và thường sẽ hoạt động tốt hơn