Based по запросу OMG пОНИ с поправками:
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')
хотя производительность запроса не было бы отлично, так как он будет работать инфу на двух расчетных значений. Я считаю, что он по-прежнему может действовать прилично, если вы не нажмете миллионы записей.
С другой стороны, вы могли бы, вероятно, запустить его быстрее, запрашивая первым для 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.
Последний календарный месяц? Непосредственные последние 30 дней? –