我试过这个:
SELECT first_name,last_name,company_name FROM users ORDER BY last_name, company_name ASC
我有一张这样的桌子:
+------------------+--------------------+--------------------+
|名|姓|公司名|
+------------------+--------------------+--------------------+
|阿尔法|阿尔法|布拉沃|
+------------------+--------------------+--------------------+
|回声阿尔法|
+------------------+--------------------+--------------------+
|三角洲|
+------------------+--------------------+--------------------+
|| |查理|
+------------------+--------------------+--------------------+
当前行的顺序是:
,查理
阿尔法,阿尔法,布拉沃
三角洲,三角洲,
回声,回声,阿尔法
我希望实现的是,主要按姓氏排序行,但如果它不可用(空),则按公司名称排序,但仍将此公司名称列与姓氏列进行比较。。。很抱歉可能解释不准确。以下是我想要达到的顺序:
阿尔法,阿尔法,布拉沃
,查理
三角洲,三角洲,
回声,回声,阿尔法
编辑:这可以通过一个MySQL查询实现吗?
最佳答案
使用ISNULL()
功能。如果last_name
值是NULL
,则它将使用company_name
值进行排序。
ORDER BY ISNULL(last_name, company_name)
如果您的姓氏不为空,并且只是一个空字符串,则可以使用NULL If()函数来解决此问题:
ORDER BY ISNULL(NULLIF(last_name,''), company_name)