这里有点帮助。我真的不明白如何在MySQL中使用这个合并
我已阅读google结果中how to use coalsece
的第1页结果中的所有页面。
我知道它的意思是它返回它遇到的第一个非null值,否则返回null。
但它对我来说仍然含糊不清。
coalesce(column1,column2)
?如果第一列为空且其他列不为空,该怎么办?答案 0 :(得分:35)
为什么我看到返回多个值的查询?是不是只返回了第一个非空值?
是的,它只是返回的第一个非NULL值。你必须误解你所看到的那些你认为不是这样的问题:如果你能告诉我们一个例子,我们或许可以帮助澄清误解。
它如何决定基于哪一列?合并(列1,列2)?如果第一列为null而其他列不为空,该怎么办?
按照其参数的顺序:在此示例中,column1
之前column2
。
或者如果我错了或我的语法错了,我该怎么写呢?
你没错。
有人可以提供一个关于如何使用它的非常好的简单示例吗?
mysql> SELECT COALESCE(NULL,1); -> 1 mysql> SELECT COALESCE(NULL,NULL,NULL); -> NULL
当需要使用时。
每当希望从列表中选择第一个非NULL值时,都希望使用。
答案 1 :(得分:25)
当我想从优先级列表中找到第一列非空白时,我个人使用coalesce。
比如说我想从客户表中获取一个电话号码,他们有3列名为mobile,home和work的电话号码,但我只想检索第一个非空白的号码。
在这种情况下,我拥有移动设备的优先权,然后回家然后工作。
TABLE STRUCTURE
--------------------------------------------
| id | customername | mobile | home | work |
--------------------------------------------
| 1 | Joe | 123 | 456 | 789 |
--------------------------------------------
| 2 | Jane | | 654 | 987 |
--------------------------------------------
| 3 | John | | | 321 |
--------------------------------------------
SELECT id, customername, COALESCE(mobile, home, work) AS phone FROM customers
RESULT
------------------------------
| id | customername | phone |
------------------------------
| 1 | Joe | 123 |
------------------------------
| 2 | Jane | 654 |
------------------------------
| 3 | John | 321 |
------------------------------
答案 2 :(得分:3)
COALESCE将返回第一个非空列或值。
示例用法:
SELECT COALESCE(my_column, my_other_column, 'default') as username FROM my_table;
示例结果:
my_column my_other_column results
null null 'default'
null 0 '0'
null 'jimmy' 'jimmy'
'bob' 'jimmy' 'bob'
答案 3 :(得分:0)
这是Coalesce的一个完美示例,如果将空字段/列更改为您希望它们从null到0和1的情况。将其复制到mysql编辑器中它看起来会好很多
选择" Column1(不想触摸)",coalesce(column2(如果为null则设置为0),0)为column2(给它的名称与例如" column2& #34;),coalesce(column3(而不是null设置为1),1)as column3(给它的名称与例如" column3")
来自" MydataTable"在哪里' somedates' (' 2015-04-10',' 2015-04-03',' 2015-03-27',' 2015-04-17& #39;)和id = 10的顺序由某些日期';