SQL更新表

时间:2017-05-19 09:30:56

标签: mysql sql database

col1 | col2 | col3
-----------------------------
1    |  1   |  somestring 12
1    |  2   |  somestring sd
2    |  1   |  somestring gvr
2    |  2   |  somestring 46
3    |  1   |  somestring sdf
3    |  2   |  somestring 4

...

我想更新col3 WHERE col2 = 2

与col3成为col1的CONCAT 并且全部替换''' - '。

如果col1< 10添加一个前导'0',所以'1'将是'01'

总共col3的值应该是'01 -somestring-sd'

有人可以帮我解释一下这个声明吗?

4 个答案:

答案 0 :(得分:1)

创建数据/插入数据

CREATE TABLE Table1
    (`col1` INT, `col2` INT, `col3` VARCHAR(255))
;

INSERT INTO Table1
    (`col1`, `col2`, `col3`)
VALUES
    (1, 1, 'somestring 12'),
    (1, 2, 'somestring sd'),
    (2, 1, 'somestring gvr'),
    (2, 2, 'somestring 46'),
    (3, 1, 'somestring sdf'),
    (3, 2, 'somestring 4')
;

<强>查询

UPDATE 
 Table1
SET
   col3 = 
     CASE
         WHEN col1 < 10
         THEN REPLACE(CONCAT('0', col1, '-', col3), ' ', '-')
         ELSE REPLACE(CONCAT(col1, '-', col3), ' ', '-')
     END
WHERE
 col2 = 2   

<强>结果

1 queries executed, 1 success, 0 errors, 0 warnings

Query: UPDATE Table1 SET col3 = CASE WHEN col1 < 10 THEN REPLACE(CONCAT('0', col1, '-', col3), ' ', '-') ELSE REPLACE(CONCAT(col1, '-',...

3 row(s) affected

<强>查询

SELECT * FROM Table1

<强>结果

  col1    col2  col3              
------  ------  ------------------
     1       1  somestring 12     
     1       2  01-somestring-sd  
     2       1  somestring gvr    
     2       2  02-somestring-46  
     3       1  somestring sdf    
     3       2  03-somestring-4  

答案 1 :(得分:0)

UPDATE TABLE1 SET COL3=CONCAT(IF(COL1 < 10,0,''),COL1,REPLACE(COL3, ' ', '-' )) WHERE COL2=2

尝试以上代码。

希望这会有所帮助。

答案 2 :(得分:0)

只需使用Concat和替换

update table_name as t set t.col3 = 
CONCAT(if(t.col1<10,0,''),t.col1,REPLACE(t.col‌​3,' ','-')) where 
t.col2 =2; 

答案 3 :(得分:0)

试试这个

Update table1 
set 
col3 = concat((case when col1>10 then '0'+col1 else col1 end),'-',REPLACE(COL3, ' ','-' ))
where col2=2