Aby mieć sensowny numer wiersza, musisz uporządkować wyniki. Następnie możesz zrobić coś takiego:
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
Zwróć uwagę, że klauzula WHERE zapytania podrzędnego musi być zgodna z klauzulą WHERE lub kluczem podstawowym zapytania głównego i ORDER BY głównego zapytania.
SQL Server ma konstrukcję ROW_NUMBER() OVER, aby to uprościć, ale nie wiem, czy MySQL ma coś specjalnego do rozwiązania tego problemu.
Ponieważ mój post tutaj został zaakceptowany jako odpowiedź, chcę również wywołać odpowiedź Dana Goldsteina, która jest bardzo podobna w podejściu, ale używa JOIN zamiast zapytania podrzędnego i często działa lepiej