Я запутался с вашим названием и телом вопроса.Вы упомянули последние 5 записей.в первом предложении вашего вопроса это первый 5. Несколько слов спустя, это снова последний 5.
Если вы хотите получить последние 5, вы можете использовать это
select * from table order by date limit (select count(*)-5 from table),5
если вам нужно позаботиться о менее чем 5 записях, вам необходимо использовать следующее:
select * from table order by date limit (select case when count(*)>=5 then count(*)-5 else 0 end case from table),5
Если вы можете использовать хранимую процедуру, производительность будет выше, чем во втором примере.
declare @total;
select @total = count(*) from `table`;
case when @total<5 then
@total=0;
else //mysql require case / else
end case;
select * from `table` order by `date` limit @total, 5