Я знаю, что это старая ветка, но я только сейчас искал этот ответ. Я пробовал запрос Дана Голдштейна в MySQL, но он не работал так, как написано, потому что «внешний» - зарезервированное слово. Затем я заметил, что он все еще использует подзапрос, в любом случае.
Итак, я выяснил версию, используя JOIN, но никакого подзапроса:
SELECT SUM(IF(p1.id > p2.id, 0, 1)) AS `row`, p2.id, p2.name
FROM people p1 JOIN people p2 ON p1.name = p2.name
WHERE p1.name = 'Spiewak'
GROUP BY p2.id
Это сработало для меня в MySQL 5.1. Для MySQL, кажется, достаточно для GROUP BY p2.id. Явный ORDER BY p2.id может быть добавлен в конец запроса, но в любом случае я получил те же результаты.