На основании запроса OMG Ponies с исправлениями:
SELECT
r.*
FROM
registries AS r
JOIN (
SELECT
MAX(t.reg_date) AS max_date
FROM
registries AS t) AS t
ON DATE_FORMAT(t.max_date, '%Y-%m') = DATE_FORMAT(r.reg_date, '%Y-%m')
Хотя производительность запроса не будет превосходной, поскольку он будет работать с JOIN для двух вычисленных значений.
Я считаю, что он все еще может работать достойно, если вы не начнете бить миллионы записей.
С другой стороны, вы, вероятно, могли бы запустить его быстрее, запросив сначала MAX (reg_date)
SELECT
CONCAT(DATE_FORMAT(MAX(r.reg_date), "%Y-%m"), '-01') AS first_day
FROM
registries AS r
И затем вставка результата в запрос:
SELECT
r.*
FROM
registries AS r
WHERE
r.reg_date BETWEEN '<first_day>' AND LAST_DAY('<first_day>')
С first_day в качестве заполнителя для предыдущего результата запроса.
Если вы проиндексировали reg_date, это должно работать довольно быстро.
Примечание: LAST_DAY - это функция только для MySQL.