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

标签 mysql sorting record

我有一个“用户”表,其数据如下

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

我需要按名字获取记录顺序,但非空记录应按升序排在第一位。因此,我怎样才能得到这样的输出

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

最佳答案

试试这个:

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 中查看结果.

关于mysql - 排序记录并在顶部获取非空记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23167020/

相关文章:

delphi - Delphi XE中如何通过指针获取记录的类型信息?

mysql - 无法创建存储函数 - 语法错误?

mysql - Node.js - mysql查询超时

c# - 使计算属性在不可变记录类型中计算一次

php - 类似于 MySQL 中的符号链接(symbolic link)的东西?

php - 如何手动将 WooCommerce 产品排序设置为 "Popularity"?

尝试添加约束时出现 mysql 错误 #1452

sql - 在 Windows 上使用 mysqldump

java - 对包含带数字的字符串的文件名数组进行排序

Java Eclipse 排序然后排序 1 个数组,也许更多?