Я думаю, что вы действительно хотите упорядочить заголовки не позднее каждого дня. В MySQL 8+ вы можете сделать:
SELECT d.*
FROM test d
ORDER BY date(d.date_in),
MAX(d.date_in) OVER (PARTITION BY date(d.date_in), d.title),
d.title desc,
d.date_in ;
В более ранних версиях вы можете использовать подзапрос. Вот один из методов:
SELECT d.*
FROM test d
ORDER BY date(d.date_in),
(SELECT MAX(d2.date_in) FROM test d2 WHERE d2.title = d.title AND DATE(d2.date_in) = DATE(d.date_in)),
d.title desc,
d.date_in;
Или вы можете использовать явное JOIN
:
SELECT d.*
FROM test d JOIN
(SELECT d2.title, DATE(d2.date_in) as date, MAX(d2.date_in) as max_date_in
FROM test d2
GROUP BY d2.title, DATE(d2.date_in)
) d2
ON d2.title = d.title AND d2.date = DATE(d.date_in)
ORDER BY date(d.date_in),
d2.max_date_in,
d.title desc,
d.date_in