Відповіді:
Коротка відповідь на відповідний код:
UPDATE `table` SET test=number
Ось table
назва таблиці, і вона оточена серйозним акцентом (він же back-ticks `), оскільки це умова MySQL для втечі ключових слів (і TABLE
в цьому випадку це ключове слово).
ВВАЖАЙТЕ, що це досить небезпечний запит, який видалить усе в стовпці test
в кожному рядку таблиці, замінивши його на number
(незалежно від його значення)
Частіше використовувати WHERE
пункт, щоб обмежити ваш запит лише певним набором рядків:
UPDATE `products` SET `in_stock` = true WHERE `supplier_id` = 10
update command
... Без пункту WHERE , ця команда update
ВСЕ записує в таблицю.
спробуйте це:
update `list`
set `test` = `number`
list
ім'я db?
ПОПЕРЕДЖЕННЯ : Порядок оновлення стовпців є критичним
ДОБРО : Що я хочу, зберігає PrevStatus існуюче значення статусу
UPDATE Collections SET PrevStatus=Status, Status=44 WHERE ID=1487496;
BAD : і статус, і PrevStatus закінчуються як 44
UPDATE Collections SET Status=44, PrevStatus=Status WHERE ID=1487496;
спробуйте наступне:
UPDATE `list` SET `test` = `number`
він створює копію всіх значень з "числа" і вставляє її в "тест"
Слідом працював для мене ..
для таблиці, скажімо, "test_update_cmd", стовпець значення значення col2, стовпець цільового значення col1 та стовпець умови col3: -
UPDATE test_update_cmd SET col1=col2 WHERE col3='value';
Щасти!
ви можете зробити це з процедурою також, щоб у мене була процедура для цього
DELIMITER $$
CREATE PROCEDURE copyTo()
BEGIN
DECLARE x INT;
DECLARE str varchar(45);
SET x = 1;
set str = '';
WHILE x < 5 DO
set str = (select source_col from emp where id=x);
update emp set target_col =str where id=x;
SET x = x + 1;
END WHILE;
END$$
DELIMITER ;