回答:
問題のコードの短い答えは次のとおりです。
UPDATE `table` SET test=number
これtable
はテーブル名であり、これは重大なアクセント(別名バックティック `)で囲まれています。これは、キーワードをエスケープするための 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:StatusとPrevStatusはどちらも44になります
UPDATE Collections SET Status=44, PrevStatus=Status WHERE ID=1487496;
あなたは手順でもそれを行うことができるので、これのための手順があります
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 ;