以下查詢可以完成這項工作。
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