Обновление
Чтобы увеличить число пользователей для всех филиалов, используйте row_number()
:
INSERT INTO usersTable (users, branch)
SELECT CONCAT('User', ROW_NUMBER() OVER(ORDER BY t1.number, t0.number)),
CONCAT('branch', t1.number)
FROM tally t0
CROSS JOIN tally t1
WHERE t0.number <= 3
AND t1.number <= 700
ORDER BY t1.number, t0.number
Оригинальная версия
Если у вас уже есть таблица подсчета (чисел), простой insert...select
с использованием cross join
и concat
может получить необходимые данные:
INSERT INTO usersTable (users, branch)
SELECT CONCAT('User', t0.number), CONCAT('branch', t1.number)
FROM tally AS t0
CROSS JOIN tally AS t1
WHERE t0.number <= 3
AND t1.number <= 700
Если вы этого не сделаетеуже есть таблица подсчета, прочитайте этот пост о способах его создания.
Вы также можете прочитать этот пост администратора базы данных о том, почему вы на самом деле хотите его.
Если вы не можете или не хотите создавать таблицу подсчета, вы можете использовать общее табличное выражение для создания таблицы подсчета на лету - есть несколько способов ее создания - Гордон уже показал рекурсивный подход cte,поэтому я покажу другой - используя row_number
и cross join
:
With tally as
(
SELECT TOP 700 ROW_NUMBER() OVER(ORDER BY @@SPID) As number
FROM sys.objects a
CROSS JOIN sys.objects b
)
INSERT INTO usersTable (users, branch)
SELECT CONCAT('User', t0.number), CONCAT('branch', t1.number)
FROM tally AS t0
CROSS JOIN tally AS t1
WHERE t0.number <= 3
AND t1.number <= 700