Câu trả lời:
Câu trả lời ngắn cho mã trong câu hỏi là:
UPDATE `table` SET test=number
Đây table
là tên bảng và được bao quanh bởi dấu trọng âm (còn gọi là back-ticks `) vì đây là quy ước của MySQL để thoát từ khóa (vàTABLE
là một từ khóa trong trường hợp đó).
HÃY THỬ, rằng đây là truy vấn khá nguy hiểm sẽ xóa sạch mọi thứ trong cột test
trong mỗi hàng của bảng thay thế nó bằngnumber
(bất kể giá trị của nó)
Việc sử dụng WHERE
mệnh đề để giới hạn truy vấn của bạn chỉ ở một nhóm hàng cụ thể là phổ biến hơn :
UPDATE `products` SET `in_stock` = true WHERE `supplier_id` = 10
update command
... Nếu không có mệnh đề WHERE , lệnh này sẽ update
TẤT CẢ các bản ghi trong bảng.
thử cái này:
update `list`
set `test` = `number`
list
là tên db?
THƯỞNG : Thứ tự các cột cập nhật là rất quan trọng
TỐT : Những gì tôi muốn lưu Giá trị Trạng thái hiện tại vào PrevStatus
UPDATE Collections SET PrevStatus=Status, Status=44 WHERE ID=1487496;
BAD : Status & PrevStatus đều kết thúc là 44
UPDATE Collections SET Status=44, PrevStatus=Status WHERE ID=1487496;
thử làm theo:
UPDATE `list` SET `test` = `number`
nó tạo bản sao của tất cả các giá trị từ "số" và dán nó vào "kiểm tra"
Sau đây làm việc cho tôi ..
đối với bảng, 'test_update_cmd', cột giá trị nguồn col2, cột giá trị đích col1 và cột điều kiện col3: -
UPDATE test_update_cmd SET col1=col2 WHERE col3='value';
Chúc may mắn!
bạn cũng có thể làm điều đó với Thủ tục vì vậy tôi có một quy trình cho việc này
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 ;