如何在MySQL中使用Coalesce

Bel*_*day 31 mysql coalesce

这里有点帮助.我真的不明白如何在MySQL中使用这个coalesce

我已阅读第1页how to use coalsece中谷歌搜索结果中的所有页面.

我知道它的含义是它返回它遇到的第一个非null值,否则返回null.

但它对我来说仍然含糊不清.

  1. 为什么我看到返回多个值的查询?是不是只返回了第一个not null值?
  2. 它如何决定基于哪一列?coalesce(column1,column2)?如果第一列为空而其他列不为空怎么办?
  3. 或者,如果我错了或我的语法错误,我该怎么写呢?
  4. 有人可以提供一个如何使用它的非常好的简单示例吗?
  5. 并且当需要使用时.

egg*_*yal 36

  1. 为什么我看到返回多个值的查询?是不是只返回了第一个not null值?

    是的,它只是返回的第一个非NULL值.你必须误解你所看到的那些你认为不是这样的问题:如果你能告诉我们一个例子,我们或许可以帮助澄清误解.

  2. 它如何决定基于哪一列?合并(列1,列2)?如果第一列为空而其他列不为空怎么办?

    按其参数顺序:在此示例中,column1之前column2.

  3. 或者如果我错了或我的语法错了,我该怎么写呢?

    你没错.

  4. 有人可以提供一个如何使用它的非常好的简单示例吗?

    取自文档:

    
    mysql> SELECT COALESCE(NULL,1);
            -> 1
    mysql> SELECT COALESCE(NULL,NULL,NULL);
            -> NULL
    
    Run Code Online (Sandbox Code Playgroud)
  5. 并且当需要使用时.

    每当希望从列表中选择第一个非NULL值时,都希望使用.

  • 进一步回答(5) - 在使用LEFT JOIN时也非常有用. (4认同)

小智 27

当我想从优先级列表中找到第一列不是空行时,我个人使用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    |
------------------------------
Run Code Online (Sandbox Code Playgroud)

  • 这是一个非常有用的解释。我已经阅读了很多关于*如何*使用它的内容,但无法真正解析*为什么*我会使用它。 (2认同)