SQL запрос, чтобы получить этот результат - PullRequest
4 голосов
/ 16 апреля 2010

Предположим, у меня есть таблица user и три столбца mobilePhone, homePhone и workPhone ...

Я должен выбрать homePhone для каждого пользователя в качестве первого префа
если нет значения
Я пойду на mobilePhone и
если для него нет значения
Я пойду на workPhone ....

Любое предложение, как это можно сделать в MySQL ..

Ответы [ 5 ]

7 голосов
/ 16 апреля 2010

Попробуйте использовать Sql Server COALESCE (Transact-SQL) ,

Возвращает первое ненулевое выражение среди его аргументов.

То же самое касается MySql COALESCE (значение, ...)

Возвращает первое ненулевое значение в список, или NULL, если нет ненулевые значения.

Что-то вроде

SELECT  COALESCE(homePhone, mobilePhone, workPhone) ContactPhone
FROM    Users
3 голосов
/ 16 апреля 2010

Требуется функция Coalesce, которая возвращает первое ненулевое значение:

Select Coalesce(homephone, mobilephone, workphone) Phone
From `user`

Coalesce существует в MySQL. Это определенная ANSI функция.

Функция объединения (MySQL).

0 голосов
/ 16 апреля 2010

Другое решение заключается в использовании следующего SQL:

ISNULL(ISNULL(HomePhone,MobilePhone),WorkPhone) AS Phone

Спасибо, Нирмал

0 голосов
/ 16 апреля 2010

Вы можете использовать вложенные операторы IF, или CASE, или выполнять эту работу, используя уровень бизнес-логики

0 голосов
/ 16 апреля 2010
SELECT user, homePhone 
FROM user
WHERE homePhone != ''

UNION

SELECT user, mobilePhone 
FROM user
WHERE homePhone = '' AND mobilePhone != ''

UNION 

SELECT user, workPhone 
FROM user
WHERE homePhone = '' AND mobilePhone = ''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...