我试图运行这个:
UPDATE test
SET col2=1 WHERE col1='test1',
SET col2=3 WHERE col1='test2';
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
[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 '
Run Code Online (Sandbox Code Playgroud)
我的桌子:
CREATE TABLE `test` (
`col1` varchar(30) NOT NULL,
`col2` int(5) DEFAULT NULL,
PRIMARY KEY (`col1`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)
这是,第一行结束时的事情.当我将其更改;为时,它无法识别col2.如何在一个查询中执行此操作?
小智 38
这是最明确的方式
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')
Run Code Online (Sandbox Code Playgroud)
你可以用CASE这个
UPDATE test
SET col2 = CASE WHEN col1 = 'test1' THEN 1 ELSE 3 END
WHERE col1 IN ('test1', 'test2')
Run Code Online (Sandbox Code Playgroud)
或IF(MySQL仅)
UPDATE test
SET col2 = IF(col1 = 'test1', 1, 3)
WHERE col1 IN ('test1', 'test2')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79500 次 |
| 最近记录: |