以后退为顺序

时间:2014-10-27 20:42:50

标签: mysql

我想用一个简单的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);

3 个答案:

答案 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;