Вывести запись столько раз, сколько требуется - MySQL
Формулировка задачи:
Приветствую!
Допустим, есть таблица:
Есть перечень id. Например: 3,1,2,2,3,1,2. Нужно сформулировать запрос, чтобы на основе этого перечня получить такой результат:
Кто подскажет, как такое сделать?
ID |
TITLE |
| 1 | Иванов |
| 2 | Петров |
| 3 | Сидоров |
TITLE |
| Сидоров |
| Иванов |
| Петров |
| Петров |
| Сидоров |
| Иванов |
| Петров |
Решение задачи: «Вывести запись столько раз, сколько требуется»
textual
Листинг программы
SELECT name FROM ( SELECT 3 AS id UNION ALL SELECT 1 AS id UNION ALL SELECT 2 AS id UNION ALL SELECT 2 AS id UNION ALL SELECT 3 AS id UNION ALL SELECT 1 AS id UNION ALL SELECT 2 AS id ) AS tmp JOIN tbl ON tbl.id = tmp.id;
Объяснение кода листинга программы
В данном коде выполняется операция выбора записей из таблицы tbl с использованием временной таблицы tmp.
- Создается подзапрос, который выводит последовательность чисел: 3, 1, 2, 2, 3, 1, 2. Это делается с использованием оператора
SELECTи оператораUNION ALL, который объединяет несколько выборок в одну. - Эта выборка чисел затем используется во внешнем запросе для объединения с таблицей
tblпо полюid. Это делается с использованием оператораJOIN. - В результате получается выборка из таблицы
tbl, где записи повторяются столько раз, сколько они встречаются в последовательности чисел. Этот код можно использовать, например, для тестирования нагрузки на базу данных или для проверки производительности запросов.