@romicohen
Системный Архитектор

Можно ли каким-то хитрым SQL-запросом сгенерировать и вставить в таблицу 100500 записей, с последовательно возрастающими int или хэшами?

Периодически возникает потребность заполнить новую колонку в таблице то ли хэшами, типа:

id | hash
1 | asDRF
2 | ffTRA
...
100500 | mnbVC


то ли просто аримфетической (или еще какой) прогрессией, вроде:

id | someint
1 | 1002
2 | 1003
...
100500 | 101501


Как это сделать PHP-скриптом я понимаю.

Но может есть какой-то способ вставить эти записи SQL-запросом? Через консоль или PhpMyAdmin например? Ну, как-то прописать всю логику по генерации хэшей или прогрессии внутри самого запроса - можно так?

Спасибо.
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ответы на вопрос 2
@maksam07
Пример так себе, но как вариант:
https://stackoverflow.com/a/45714216
https://stackoverflow.com/a/15149327
Формируете себе строку запроса с добавлением сколько годно записей (ограничение скорее всего на стороне бд будет) и одним запросом добавляете множество строк.
Ответ написан
@rPman
если количество не велико (точнее разумно) можно симулировать таблицу с возрастающими значениями на основе union и left join

p.s. это адский быдлокод но я помню делал такую вьюху
create view digits (a) as select 0 as a union
select 1 union
select 2 union
select 3 union
select 4 union
select 5 union
select 6 union
select 7 union
select 8 union
select 9

соответственно дальше можно написать такой запрос
select x.a+y.a*10+z.a*100 from  digits x,digits y,digits z

количество указаний digits во from в нем определит максимальное количество значений (в данном случае 1000) как степень 10

Можно создать из этого ее вьюху, и на ее основе уже оперировать степенями 1000

у тебя будет виртуальная таблица с нужным количеством записей, ты можешь фильтровать их по значению и формировать на ее основе свои insert
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы