Как использовать Coalesce в MySQL

небольшая помощь здесь. Я действительно не понимаю, как использовать это объединение в MySQL

Я прочитал все страницы на странице 1 результат how to use coalsece в результате google.

Я знаю его значение, что он возвращает первое ненулевое значение, которое он встречает, и null в противном случае.

но это все еще неясные для меня.

  1. как я увидел запросы, которые возвращают несколько значений? Разве это не только первое не null значение вернулся?
  2. и как он решает, какой столбец для базы? coalesce(column1,column2)? что делать, если первый столбец равен null, а другой столбец не равен null?
  3. или если я ошибаюсь или мой синтаксис неправильный, как мне правильно писать?
  4. может ли кто-нибудь предоставить очень хороший и простой пример того, как его использовать?
  5. и когда желательно использовать.

4 ответов


  1. как я увидел запросы, которые возвращают несколько значений? разве это не только первое значение not null, которое возвращается?

    да, возвращается только первое ненулевое значение. Вы, должно быть, ошибаетесь в вопросах, которые вы видели, когда вы думали, что это не так: если бы вы могли показать нам пример, мы могли бы помочь прояснить недоразумение.

  2. и как это решить, какой столбец база? коалесцируют(столбец1,столбец2)? что делать, если первый столбец равен null, а другой столбец не равен null?

    в порядке своих аргументов: в этом примере column1 до column2.

  3. или если im неправильно или мой синтаксис неправильный, как мне правильно написать его?

    ты не ошибся.

  4. может ли кто-нибудь предоставить очень хороший и простой пример того, как его использовать?

    взяты из документация:

    
    mysql> SELECT COALESCE(NULL,1);
            -> 1
    mysql> SELECT COALESCE(NULL,NULL,NULL);
            -> NULL
    
  5. и когда желательно использовать.

    желательно использовать всякий раз, когда вы хотите выбрать первое ненулевое значение из списка.


Я лично использую coalesce, когда хочу найти первый столбец, который не пуст в строке из списка приоритетов.

в этом случае у меня есть приоритет мобильного телефона, затем дома, а затем работы.

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    |
------------------------------

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'

Это идеальный пример объединения, если изменит нулевые поля / столбцы на то, что вы хотите, чтобы они были в случае от null до 0 и 1. Скопируйте это в Редактор mysql, он будет выглядеть намного лучше

выберите " Column1 (Dont Want Touch)", coalesce (column2 (который вы хотите установить в 0, если null), 0) как column2 (дайте ему то же имя,что и, например, "column2"), coalesce(column3(вместо null, установленного в 1), 1) Как column3(дайте ему то же имя, что и, например, "column3")
из "MydataTable" Где "somedates" в ('2015-04-10','2015-04-03','2015-03-27','2015-04-17') и id = 10 порядок по "somedates";