以下查询可以完成这项工作。
SELECT *
FROM nameTable
ORDER BY IFNULL(name,first_name)
OR
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。
如果值为空字符串而不是null,则不起作用。 @ randyh22解决方案适用于null或空字符串。 – randyh22