Как стать автором
Обновить

Комментарии 10

А для mysql нет варианта кроме как сгенерировать запрос вида select 1 union select 2 union select 3…
По приведенной вами ссылке — про другое.
Как это про другое, когда именно про это?
Запрос SELECT @i := @i + 1 AS row_number FROM your_table, (select @i:=0) AS z выводит записи с числами, начиная с единицы. Чтобы ограничить количество записсей используется LIMIT.
Таким образом, SELECT @i := @i + 1 AS row_number FROM your_table, (select @i:=0) AS z LIMIT 16 выводит записи с числами от 1 до 16 включительно.
Таблица your_table — любая уже имеющаяся таблица достаточного размера. Если достаточно большой таблицы нет, то можно ее перемножить саму на себя несколько раз.
Таким же образом последовательности дат можно генерировать, что полезно для отчётов.
Как именно про это, если типичный кейс для generate_series — это как раз генерация данных для пустой таблицы?

«любая уже имеющаяся таблица», которая на самом деле-то и не нужна — это не решение, это костыль для разовых операций.
"«любая уже имеющаяся таблица», которая на самом деле-то и не нужна"
Она не «не нужна», она используется для каких-то своих целей и уже есть в БД. Если нет готовой своей, что практически невероятно, то можно использовать одну из системных таблиц, хотя это может быть медленнее.
А зачем такие сложности, если можно сгенерировать «виртуальную» таблицу в виде (select 1 union all select 2...) as t, умножить саму на себя и так далее?
Ваш вариант более переносим, но чисто по человечески он сложнее.

Часто удобнее подменить результат выполнения запроса на стороне сервера (mock, faker).

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации