排序记录并在顶部获取非空记录

时间:2014-04-19 07:02:06

标签: mysql sorting record

我有一个表“用户”,其数据类似

id   firstname  lastname
1    NULL       NULL
2    NULL       NULL
3    Tim        Kanter
4    John       Mathews
5    Brady      Allen

我需要通过firstname获取记录顺序,但非空记录应该按升序排在第一位。因此,我如何获得像

这样的输出
id   firstname  lastname
5    Brady      Allen
4    John       Mathews
3    Tim        Kanter
1    NULL       NULL
2    NULL       NULL

2 个答案:

答案 0 :(得分:2)

试试这个:

SELECT * FROM TableName 
ORDER BY CASE WHEN firstname IS NULL THEN 1 ELSE 0 END, firstname

结果:

ID  FIRSTNAME   LASTNAME
5   Brady       Allen
4   John        Mathews
3   Tim         Kanter
1   (null)      (null)
2   (null)      (null)

请参阅SQL Fiddle中的结果。

答案 1 :(得分:0)

您可以使用UNION执行此操作:

  SELECT * FROM (SELECT * FROM table WHERE firstname IS NOT null
  ORDER BY firstname) AS `t1`
  UNION
  SELECT * FROM table WHERE firstname IS  null