我想用一个简单的SELECT语句和ORDER BY来检索数据,但是ORDER BY应该有一个回退。
即:我的记录有一个归档name
和一个字段名称sortkey
:
CREATE TABLE company
(`id` int, `name` varchar(10), `sortkey` varchar(10))
;
INSERT INTO company
(`id`, `name`, `sortkey`)
VALUES
(1, 'Azzz', ''),
(2, 'Bzzz', ''),
(3, 'Czzz', 'Aaa')
;
我想从SELECT语句中获取结果:
Czzz
Azzz
Bzzz
当我有sortkey
时,请使用它。如果没有,请使用字段name
。
Peudo代码:SELECT * FROM company ORDER BY name,sortkey (but prioritize the sortkey);
答案 0 :(得分:2)
我建议使用IF()
来确定要使用的字段。
SELECT * FROM company ORDER BY IF(sortKey != '', sortKey, name)
答案 1 :(得分:1)
尝试此查询
SELECT * FROM company
ORDER BY CASE
WHEN sortkey != '' THEN sortkey
WHEN sortkey = '' THEN name
END
答案 2 :(得分:1)
您可以按多列使用排序(排序)。
SELECT * FROM company ORDER BY sortkey, name;