mysql - 在单个 MySQL 查询中更新多行

标签 mysql sql

我正在尝试运行这个:

UPDATE test 
SET col2=1 WHERE col1='test1', 
SET col2=3 WHERE col1='test2';

我得到的错误:

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '

我的 table :

CREATE TABLE `test` (
    `col1` varchar(30) NOT NULL,
    `col2` int(5) DEFAULT NULL,
    PRIMARY KEY (`col1`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

这是关于第一行末尾的 , 的东西。当我将其更改为 ; 时,它无法识别 col2。我怎样才能在一个查询中做到这一点?

最佳答案

这是最清晰的方法

UPDATE test
SET col2 = CASE col1
WHEN 'test1' THEN 1
WHEN 'test2' THEN 3
WHEN 'test3' THEN 5
END,
colx = CASE col1
WHEN 'test1' THEN 'xx'
WHEN 'test2' THEN 'yy'
WHEN 'test3' THEN 'zz'
END
WHERE col1 IN ('test1','test2','test3')

关于mysql - 在单个 MySQL 查询中更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18802671/

相关文章:

mysql - 如何使这个长的 sql 查询成为一个完整的连接?

mysql - 如何实现更高效的搜索功能?

php - 为什么 mysql Insert into query 在 php 应用程序中不起作用

php - 如何防止 PHP 中的 SQL 注入(inject)?

php - 格式化网址

mysql - 将唯一的 mysql 记录从 prestashop 导出到 csv

sql - 在 SQL 中分组之前合并结果

sql - 在 SQL Server 2005 中设置存储过程的查询超时

sql - 如何紧密包含 SQL 查询结果

php - Laravel 和 Typeahead.js : retrieve category name but submit its ID to the database?