Хелпаните по сиквель плиз. Есть запрос - SELECT * FROM `tablename` t where t.theme in @array LIMIT 3 . Выдаст три первые записи, айди которых есть в массиве. А мне нужно три по каждому ключу. Т.е. например, если в @array три элемента, то три выдаст по каждому, итого 9. Как вот так сделать?
>>3129023 (OP) https://dbfiddle.uk/DS7HJ_7X UNNEST развернет выбранные темы в строки, а LATERAL заджойнит к каждой строке результат подзапроса - по три строки на каждую тему.
Скорость запроса зависит только от количества выбранных тем, а не от размера таблицы как с row_number(). А выбрать столько тем чтобы этот запрос начал тормозить ты физически не сможешь - максимальной длины запроса не хватит.