mysql - 每行具有不同值的 UPDATE SET 列

标签 mysql sql

如果我有一张 table my_table像这样:

| id | val1 | val2|
| 1  | foo1 | bar |
| 2  | foo2 | baz |
| 3  | foo3 | bam |

我有一个以编程方式生成的硬编码逗号分隔值列表:spam, eggs, ham .

我想将我的值插入列 val1 .我在想象这样的事情:
UPDATE my_table SET val1 = SELECT * FROM (VALUES ('spam'),('eggs'),('ham'))
但这给了我一个语法错误(MySQL 5.6.44)

最终结果应如下所示:
| id | val1 | val2|
| 1  | spam | bar |
| 2  | eggs | baz |
| 3  | ham  | bam |

最佳答案

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id SERIAL PRIMARY KEY
,val1 VARCHAR(12) NOT NULL
,val2 VARCHAR(12) NOT NULL
);

INSERT INTO my_table VALUES
(1,'foo1','bar'),
(2,'foo2','baz'),
(3,'foo3','bam');

UPDATE my_table SET val1 = SUBSTRING_INDEX(SUBSTRING_INDEX('spam,eggs,ham',',',id),',',-1);

SELECT * FROM my_table;
+----+------+------+
| id | val1 | val2 |
+----+------+------+
|  1 | spam | bar  |
|  2 | eggs | baz  |
|  3 | ham  | bam  |
+----+------+------+

关于mysql - 每行具有不同值的 UPDATE SET 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58014002/

相关文章:

mysql - 保持连接 - mysql

MySQL 错误 1449 : The user specified as a definer does not exist

mysql - rake 数据库 :schema:dump is not producing schema for all databases

mysql - 自定义 MySql 查询

java - sql语法如何在java中写下来

mysql - SQL - 找到最小的未使用数字

mysql - MySQL 中何时使用单引号、双引号和反引号

mySQL查询: How to choose just one comment from post list?

mysql - SSRS显示基本信息

java - 获取异常 '0000-00-00' 不能表示为 java.sql.Date 即使我正在使用 resultset.getString() 方法