Следующий запрос будет выполнять эту работу.
SELECT *
FROM nameTable
ORDER BY IFNULL(name,first_name)
ИЛИ
SELECT *
FROM nameTable
ORDER BY coalesce(name,first_name)
N: B: Если вы не можете получить доступ к SQL FIDDLE.
CREATE TABLE `nameTable` (
`ID` int(11) NOT NULL AUTO_INCREMENT ,
`name` varchar(50) CHARACTER SET latin1 COLLATE latin1_general_ci NULL DEFAULT NULL ,
`first_name` varchar(50) CHARACTER SET latin1 COLLATE latin1_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`ID`)
);
INSERT INTO `nametable` VALUES ('1', 'hello', null);
INSERT INTO `nametable` VALUES ('2', null, 'many');
INSERT INTO `nametable` VALUES ('3', null, 'alive');
INSERT INTO `nametable` VALUES ('4', 'persons', null);
Примечание:
Основное различие между ними состоит в том, что IFNULL
функция принимает два аргумента и возвращает первый, если это не NULL
или второй, если первый из них является NULL
.
Функция COALESCE
может принимать два или более параметров и возвращает первый параметр не NULL
, или NULL, если все параметры: null
.
Это не работает, если значения представляют собой пустые строки, а не нулевые. Решение @ randyh22 работает для нулевой или пустой строки. – randyh22