MySql Больше 100 записей с одним полем — Удалить ОТ 100 по дате. Как такое запросить?

Так я проверяю какие записи с полем point имеют количество больше 100
SELECT COUNT(*), point
FROM jobs
GROUP BY point
HAVING COUNT(*) > 100


А как сделать и возможно ли, одним запросом?
Мне нужно что бы старые записи удалялись, если их количество с одинаковым полем больше 100.
В базу постоянно добавляются записи, если записей получается больше 100 с одинаковое полем point
То нужно удалить у них самые старые по полю TIMESTAMP
Например записей 130 с одинаковым point И получается нужно удалить 30, что бы 100 осталось, но удалить самые старые по полю created_at оно имеет тип TIMESTAMP
  • Вопрос задан
  • 382 просмотра
Пригласить эксперта
Ответы на вопрос 3
@Nc_Soft
добавьте поле point_count и не мучайтесь
Ответ написан
qonand
@qonand
Software Engineer
DELETE jobs.*
FROM
	jobs
INNER JOIN (
	SELECT
		COUNT(*) as cnt,
		MAX(datetime) AS datetime,
		point
	FROM
		jobs
	GROUP BY
		point
	HAVING
		cnt > 100
) AS t ON jobs.point = t.point
AND jobs.datetime < t.datetime
Ответ написан
Alexeytur
@Alexeytur
DELETE FROM jobs j WHERE 
(SELECT COUNT(*) FROM jobs j1 WHERE 
j1.point=j.point AND j1.datetime>j.datetime)>99
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы