以下是一个示例表:
id name code
----------------
1 n1
2 n2
3 n3
我想更新具有不同值的每一行的代码列,因此对于id为1的行,我想为代码'zb6DXBfJ'添加此值,为行id 2'NV6Nx4St'添加此值,对于行id 3代码列'q23ZMACc'的值。所以我的决赛桌应该是这样的:
id name code
----------------
1 n1 zb6DXBfJ
2 n2 NV6Nx4St
3 n3 q23ZMACc
答案 0 :(得分:1)
UPDATE TableName
SET Code = CASE
WHEN id = 1 THEN 'zb6DXBfJ'
WHEN id = 2 THEN 'NV6Nx4St'
WHEN id = 3 THEN 'q23ZMACc'
END;
答案 1 :(得分:0)
试试这个
UPDATE Table_Name WHERE id = desired_id SET code = desired_code;
当然,您需要根据需要替换Table_Name,desired_id和desired_code。
答案 2 :(得分:0)
根据代码的来源,您可以尝试下列其中一项:
如果您的代码来自另一个表格,您可以创建一个匹配"匹配"两个表的每一行以更新代码。这是一个例子:
首先创建表格(您已经拥有的表格和带代码的表格)
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();
希望它能让你开始。