使用 id 作为要更新的字符串的一部分来更新表

问题描述 投票:0回答:1

我正在尝试使用 ID 列作为要设置的值。

UPDATE my_items 
SET my_string = "mystrin-94990"  
WHERE id ="94990";

这里的问题是动态附加 my_string 列的 id。

理想情况下我想更新所有记录:

UPDATE my_items 
SET my_string = "mystrin-{ID}" 
WHERE my_string NOT LIKE "%{ID}%";
sql sqlite variables
1个回答
0
投票

我相信以下内容可能有用(如果问题理解正确):-

UPDATE my_table SET my_string = my_string||id WHERE NOT instr(my_string,id);

以下演示了上述内容的作用:-

/* Clean up just in case */
DROP TABLE IF EXISTS my_items;
/* Create the table */
CREATE TABLE IF NOT EXISTS my_table (id INTEGER PRIMARY KEY, my_string);
/* load some initial data */
INSERT INTO my_table (my_string) VALUES ('ms00A'),('ms00B'),('ms00C');
INSERT INTO my_table VALUES (2000,'ms00D');
INSERT INTO my_table (my_string) VALUES ('ms00E'),('ms006F'),('ms007G');
/* show the data */
SELECT * FROM my_table;
/* initial update */
UPDATE my_table SET my_string = my_string||id WHERE NOT instr(my_string,id);
/* show the results */
SELECT * FROM my_table;
/* add some more data */
INSERT INTO my_table (my_string) VALUES ('ms00H'),('ms00I'),('ms00J');
/* update only those rows that have not been updated */
UPDATE my_table SET my_string = my_string||id WHERE NOT instr(my_string,id);
/* show the results */
SELECT * FROM my_table;
DROP TABLE IF EXISTS my_table;

初始数据(第一个选择):-

更新后:-

更新后添加了一些新行:-

  • 请注意,如果 my_string 列包含 id 列的值,这可能会出现问题
  • 为什么呢? (修辞)您始终可以提取或使用 my_string||id,而无需重复存储的 id。
© www.soinside.com 2019 - 2024. All rights reserved.