Нужна помощь с SQL ORDER BY - PullRequest
       17

Нужна помощь с SQL ORDER BY

2 голосов
/ 22 августа 2010

У меня есть таблица контактов, в которой есть столбцы name и default_name.

Имя контакта равно name, если только name=NULL, а затем default_name (который не может быть NULL).

Я хотел бы заказать свой выбор по имени контакта .

Например:

contact_id          name          default_name
----------          ----          ------------
    1               Dave             David
    2                                Misha
    3                                Alex
    4            Brother Leon        Leon

должно стать:

contact_id          name          default_name
----------          ----          ------------
    3                                Alex
    4            Brother Leon        Leon
    1               Dave             David
    2                                Misha

Как бы я этого достиг?

Ответы [ 3 ]

5 голосов
/ 22 августа 2010

Попробуйте

ORDER BY COALESCE(name,default_name)
2 голосов
/ 22 августа 2010

Это будет работать:

ORDER BY (IF(name IS NOT NULL, name, default_name))

Решение SQLMenace лучше.Оставьте это на месте, чтобы показать, как использовать IF () в предложениях ORDER.

mySQL Reference: Структуры потока управления

1 голос
/ 22 августа 2010

детали различаются в зависимости от СУБД, но общая идея состоит в том, чтобы ORDER BY IFNULL (name, default_name) для соответствующего выбора функции IFNULL. Семантика IFNULL заключается в том, что это первое значение, если оно не равно нулю, а затем это второе значение. Большинство СУБД знают об этом под этим именем.

http://dev.mysql.com/doc/refman/4.1/en/control-flow-functions.html#function_ifnull

...