Возможно сделать это одним запросом: получить фиксированное количество предметов разных типов, упорядоченных - PullRequest
1 голос
/ 14 декабря 2010

Допустим, у меня есть таблица со столбцами «тип» и «дата», и я хочу получить последние 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). Кто-то может пролить свет на это? Я в безопасности, используя это, как это?

1 Ответ

0 голосов
/ 14 декабря 2010

Хорошо, похоже, что с использованием HAVING все в порядке ... У меня были проблемы, потому что в моем реальном коде мне нужно использовать несколько упорядочений, и последний из них - RAND () (для разрешения связей),и это упорядочение RAND (), кажется, портит назначение переменной mysql.

...