Легко вставлять несколько строк в MySQL? - PullRequest
1 голос
/ 12 июля 2020

У меня небольшие проблемы. Мне нужно наградить пользователя предметом на нашем сайте, но я не хочу вручную заполнять числа один за другим. Есть ли способ установить запрос SQL на INSERT INTO из UID 9 to 5430 без необходимости создавать несколько строк? Вот мой пример.

INSERT INTO `item_owned` (`id`, `uid`, `iid`, `kind`, `time_owned`, `notes`) VALUES (NULL, 'x', '3626', '1', '1592596732', 'NotBanned')

Я пытаюсь сделать «x» числом, но чтобы MYSQL генерировал несколько чисел от 9 до 5430 без необходимости генерировать несколько чисел / кодов в один раз. Примерно так:

INSERT INTO `item_owned` (`id`, `uid`, `iid`, `kind`, `time_owned`, `notes`) VALUES (NULL, '9 - 5430', '3626', '1', '1592596732', 'NotBanned')

9 - 5430 - вот где проблема. Я хочу наградить этим предметом всех, чей номер находится между числом 9 and 5430.

Помощь приветствуется - спасибо.

1 Ответ

0 голосов
/ 13 июля 2020

Для этого вы можете использовать хранимую процедуру в mysql; внутри вашей хранимой процедуры вы можете использовать al oop для вставки нескольких записей. Я привел пример ниже.

Процедура может быть реализована как код, показанный здесь:

delimiter $$
create procedure fill_rows(in start_index int,in termination_point int)
begin
    while start_index <= termination_point do
        INSERT INTO `item_owned` (`id`, `uid`, `iid`, `kind`, `time_owned`, `notes`) VALUES (NULL, start_index, '3626', '1', '1592596732', 'NotBanned');
        set start_index := start_index + 1;
    end while;
end $$
delimiter ;

Теперь, когда вы хотите вставить uid, скажем, из диапазона x в y. Предположим, что x = 10 и y = 1000, тогда вы можете просто вставить эти записи, используя этот одноразовый вызов процедуры, например:

call fill_row(10, 1000);

Этот вызов вставит 990 новых строк со значениями uid 10, 11, 12 ... 1000. Надеюсь, это поможет вам!

...