Как использовать Coalesce в MySQL
небольшая помощь здесь. Я действительно не понимаю, как использовать это объединение в MySQL
Я прочитал все страницы на странице 1 результат how to use coalsece
в результате google.
Я знаю его значение, что он возвращает первое ненулевое значение, которое он встречает, и null в противном случае.
но это все еще неясные для меня.
- как я увидел запросы, которые возвращают несколько значений? Разве это не только первое не null значение вернулся?
- и как он решает, какой столбец для базы?
coalesce(column1,column2)
? что делать, если первый столбец равен null, а другой столбец не равен null? - или если я ошибаюсь или мой синтаксис неправильный, как мне правильно писать?
- может ли кто-нибудь предоставить очень хороший и простой пример того, как его использовать?
- и когда желательно использовать.
4 ответов
-
как я увидел запросы, которые возвращают несколько значений? разве это не только первое значение not null, которое возвращается?
да, возвращается только первое ненулевое значение. Вы, должно быть, ошибаетесь в вопросах, которые вы видели, когда вы думали, что это не так: если бы вы могли показать нам пример, мы могли бы помочь прояснить недоразумение.
-
и как это решить, какой столбец база? коалесцируют(столбец1,столбец2)? что делать, если первый столбец равен null, а другой столбец не равен null?
в порядке своих аргументов: в этом примере
column1
доcolumn2
. -
или если im неправильно или мой синтаксис неправильный, как мне правильно написать его?
ты не ошибся.
-
может ли кто-нибудь предоставить очень хороший и простой пример того, как его использовать?
взяты из документация:
mysql> SELECT COALESCE(NULL,1); -> 1 mysql> SELECT COALESCE(NULL,NULL,NULL); -> NULL
-
и когда желательно использовать.
желательно использовать всякий раз, когда вы хотите выбрать первое ненулевое значение из списка.
Я лично использую 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";