Я хочу выбрать из следующей таблицы все строки, которые имеют значения в столбце fname, аналогичные первым в их порядке. IOW из этой таблицы я хочу получить строки с идентификаторами 2,5 и 7 (потому что « anna » идет после « anna », а « michaela » « michaal » после « michael »).
+----+------------+----------+
| id | fname | lname |
+----+------------+----------+
| 1 | anna | milski |
| 2 | anna | nguyen |
| 3 | michael | michaels |
| 4 | james | bond |
| 5 | michaela | king |
| 6 | bruce | smart |
| 7 | michaal | hardy |
+----+------------+----------+
То, что я имею до сих пор, это:
select *, count(fname) cnt
from users group by soundex(fname)
having count(soundex(fname)) > 1;
но так как я группирую это, результат будет
+----+----------+----------+-----+
| id | fname | lname | cnt |
+----+----------+----------+-----+
| 1 | anna | milski | 2 |
| 3 | michael | michaels | 3 |
+----+----------+----------+-----+
То, что я хочу получить, это:
+----+----------+----------+-----+
| id | fname | lname | cnt |
+----+----------+----------+-----+
| 2 | anna | nyugen | 2 |
| 5 | michaela | king | 3 |
| 7 | michaal | hardy | 3 |
+----+----------+----------+-----+
Что я должен изменить в запросе? Я пытался удалить "group by", но это меняет результаты (я могу ошибаться, не проверял это подробно).