В зависимости от того, где ваших кодов берутся, вы можете попробовать один из на следующий:
Если коды пришли из другой таблицы, вы можете создать процедуру, которая будет «матч» каждая строка из двух таблицу для обновления кодов. Вот пример:
Сначала нужно создать таблицы (один у вас уже есть, и один с кодами)
CREATE TABLE table1 (
id INT(6) UNSIGNED PRIMARY KEY,
name VARCHAR(300) NOT NULL,
code VARCHAR(300));
CREATE TABLE table2 (
id INT(6) UNSIGNED PRIMARY KEY,
code VARCHAR(300) NOT NULL);
INSERT INTO table1 (id, name) VALUES
(1, 'n1'),
(2, 'n2'),
(3, 'n3');
INSERT INTO table2 (id, code) VALUES
(1, 'zb6DXBfJ'),
(2, 'NV6Nx4St'),
(3, 'q23ZMACc');
Затем создать фактическую процедуру
delimiter //
CREATE PROCEDURE assign_strings()
BEGIN
DECLARE _id INT DEFAULT 0;
DECLARE str VARCHAR(300);
DECLARE cur CURSOR FOR SELECT id FROM table1;
open cur;
myloop:LOOP
fetch cur into _id;
SELECT code INTO str FROM table2 WHERE id = _id;
UPDATE table1 SET code = str WHERE id = _id;
end loop myloop;
close cur;
END //
delimiter ;
Теперь вы можете позвонить процедура
CALL assign_strings();
Обратите внимание, что я не знаю вашей логики для извлечения этого кода. Здесь я просто предполагаю, что table2.id имеет код для table1.id. Это немного глупо, но ваша логика может быть более сложной.
Если коды просто случайные строки (не уникальный) вы можете просто использовать функцию вместо процедуры, как это:
DELIMITER //
CREATE FUNCTION get_random_string()
RETURNS VARCHAR(300)
BEGIN
RETURN 'Your_random_string';
END//
DELIMITER ;
Обратите внимание, что вам нужно реализовать свою собственную случайную стратегию строки. Вы можете использовать что-то вроде функции MD5 со случайным числом и подстроками ... все, что вам нужно.
Теперь вы можете вызвать эту функцию непосредственно в операторе обновления так:
UPDATE table1 set code = get_random_string();
Надеется, что это поможет вам начать работу.
Вы просите SQL сделать это? Вы что-то пробовали? Это просто запись нескольких операторов обновления. Не должно быть слишком сложно разобраться. – sstan
, за исключением фактической таблицы im, пытающейся изменить, имеет более 100 строк, которые необходимо обновить ... это всего лишь образец – dave
Есть ли способ вычисления этого кода для каждой строки? – celticminstrel