Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-如果满足条件,则将文本添加到行中_Mysql_Concat_String Concatenation - Fatal编程技术网

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

MySQL-如果满足条件,则将文本添加到行中,mysql,concat,string-concatenation,Mysql,Concat,String Concatenation,对不起,如果问题是基本的,我正在学习MySQL 假设我有一张这样的桌子: +---+---+-----+ |A |B |Con | +---+---+-----+ |3 |3 | | |2 |3 | | |3 |2 | | |2 |2 | | +---+---+-----+ 我想根据一个条件更新Con列,如果列小于3,就说添加列名。如果满足某个条件,我希望使用concat函数向列中添加文本,而不是编写每个条件: update table

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

假设我有一张这样的桌子:

+---+---+-----+
|A  |B  |Con  |
+---+---+-----+
|3  |3  |     |
|2  |3  |     |
|3  |2  |     |
|2  |2  |     |
+---+---+-----+
我想根据一个条件更新
Con
列,如果列小于3,就说添加列名。如果满足某个条件,我希望使用
concat
函数向列中添加文本,而不是编写每个条件:

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

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

你在找这样的东西吗

更新表1
设置con=CONCAT(当A<3然后“A”ELSE“结束时,
如果B<3,则“B”或“结束”);
这是一个演示


一个更简洁的版本,它保留了
空值
(如果需要的话)

更新表1
设置con=NULLIF(CONCAT(如果(A<3,'A',''),如果(B<3,'B',''),'');

这是一个演示

似乎是的SQL变体。
+---+---+-----+
|A  |B  |Con  |
+---+---+-----+
|3  |3  |     |
|2  |3  |A    |
|3  |2  |B    |
|2  |2  |A B  |
+---+---+-----+