Есть ли способ умножить результаты в SQL? - PullRequest
0 голосов
/ 24 октября 2019

Я строю веб-сайт, который заполняется из базы данных. Сейчас я тестирую, и я хотел бы посмотреть, как будет выглядеть мой сайт с большим количеством данных (в основном, чтобы я мог наблюдать за производительностью, разбивать страницы на страницы и решать любые проблемы с презентацией). У меня в таблице около 10 частей данных, и это здорово, но я бы хотел отобразить около 2000 на своей странице.

Есть ли способ, с помощью которого я могу читать из того же оператора таблицы SELECT * FROM поверхи снова в одном и том же запросе, чтобы прочитать таблицу несколько раз?

Я могу сделать это, передав все свои результаты в переменную и повторив эту переменную несколько раз, но это не позволит мне установитьПРЕДЕЛ или укажите правильное количество строк в запросе.

Я удивлен, что не нашел способа сделать это с помощью Google. Кажется, что это будет простая встроенная вещь.

Если нет, можете ли вы предложить какой-либо другой способ сделать это без изменения исходной таблицы?

Ответы [ 2 ]

2 голосов
/ 24 октября 2019

Пожалуйста, используйте Cross Join. Cross Join предоставит вам декартово произведение рядов из соединенных таблиц. Cross Join может генерировать много данных за короткое время. Может быть полезно для расширенного тестирования.

Пример: SELECT * FROSS A CROSS JOIN B;

Вы также можете выполнять перекрестное соединение на одной и той же таблице.

1 голос
/ 24 октября 2019

Начиная с MySQL 8, вы можете использовать рекурсивный запрос для получения нескольких строк:

with recursive cte (a, b, c) as
(
  select a, b, 1 from mytable
  union all
  select a, b, c + 1 from cte where c < 10 -- ten times as many
)
select a, b from cte;

(Конечно, вы можете изменить сгенерированные значения в детали после union all, например: select a + 5, b * 2, c + 1 from cte where c < 10.)

Демо: https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=3a2699c167e1f4a7ffbe4e9b17ac7241

...