Допустим, у меня есть таблица со столбцами «тип» и «дата», и я хочу получить последние 3 элемента каждого типа, упорядоченные по дате. (Невозможно доверять порядку таблицы или вставке порядок).
В запросе не нужно вычислять все различные значения для столбца типа, которые могут быть указаны в запросе.
Я пытаюсь с переменными, как это:
set @c=0;
set @d=0;
select *, @c:=IF(type = 1, @c+1,@c), @d:=IF(type = 2, @d+1,@d) from testtable HAVING((type=1 AND @c < 3) OR (type=2 AND @d<3)) order by testdate;
Это «почти» работает (возвращает по одной записи для каждого типа, что нормально), и я думаю, это связано с тем, как mysql разрешает предложение HAVING
(на самом деле, в некоторых случаях обнаружив, что мне нужно использовать WHERE
вместо HAVING
). Кто-то может пролить свет на это? Я в безопасности, используя это, как это?