MySQL - 如果条件满足,则在行中添加文本或文本

时间:2015-04-30 03:14:13

标签: mysql concat string-concatenation

对不起,如果问题是基本的,我正在学习MySQL。

我们说我有这样一张桌子:

+---+---+-----+
|A  |B  |Con  |
+---+---+-----+
|3  |3  |     |
|2  |3  |     |
|3  |2  |     |
|2  |2  |     |
+---+---+-----+

我想根据条件更新Con列,如果列小于3,请添加列名。而不是编写每个条件,我想用{{1}向列添加文本函数,如果条件满足:

concat

所以,我想要这样的事情:

update table
    set Con = 
        case 
            when A < 3
                then concat(' A ')
            when B < 3 
                then concat(' B ')
        end

但是,当然这不起作用,因为+---+---+-----+ |A |B |Con | +---+---+-----+ |3 |3 | | |2 |3 |A | |3 |2 |B | |2 |2 |A B | +---+---+-----+ 函数被调用一次并且只返回一个值。如果两个列满足条件,如何更改此代码以返回所有列(第3行)?谢谢。

1 个答案:

答案 0 :(得分:2)

你在找这样的东西吗?

UPDATE table1
   SET con = CONCAT(CASE WHEN A < 3 THEN ' A ' ELSE '' END, 
                    CASE WHEN B < 3 THEN ' B ' ELSE '' END);

这是 SQLFiddle 演示

更简洁的版本保留NULLS(如果您需要)

UPDATE table1
   SET con = NULLIF(CONCAT(IF(A < 3, ' A ', ''), IF(B < 3, ' B ', '')), '');

这是 SQLFiddle 演示