【发布时间】:2014-05-28 22:01:58
【问题描述】:
我有一个简单的 MySQL 选择,我想按公司名称和名字排序。该表的列是:
COMPANY_NAME
FIRST_NAME
LAST_NAME
当我使用标准 ORDER BY 运行选择时,我得到以下信息:
SELECT COMPANY_NAME, FIRST_NAME, LAST_NAME
from TABLE_contacts
WHERE CONTACT_STATUS = 'ACTIVE'
ORDER BY COMPANY_NAME, FIRST_NAME;
+------------------+------------+-----------+
| COMPANY_NAME | FIRST_NAME | LAST_NAME |
+------------------+------------+-----------+
| | Bob | Jones |
| | Mark | Doe |
| Acme Company | Joan | Todd |
| Fun Company | | |
+------------------+------------+-----------+
但是,我需要列表按字母顺序排列。在某些情况下,公司名称为空或名字为空。我的目标是使用公司名称(如果存在)按字母顺序列出,如果不存在,则使用名字列出这样的输出:
+------------------+------------+-----------+
| COMPANY_NAME | FIRST_NAME | LAST_NAME |
+------------------+------------+-----------+
| Acme Company | Joan | Todd |
| | Bob | Jones |
| Fun Company | | |
| | Mark | Doe |
+------------------+------------+-----------+
我试过下面的说法,但我的结果是一样的:
SELECT COMPANY_NAME, FIRST_NAME, LAST_NAME
from TABLE_contacts
WHERE CONTACT_STATUS='ACTIVE'
ORDER BY CASE WHEN COMPANY_NAME IS NULL THEN FIRST_NAME ELSE COMPANY_NAME END DESC;
感谢您的帮助!
【问题讨论】:
标签: mysql sql-order-by