MYSQL - 按字母顺序排序2列,如果第一列为空,则使用第二列

Law*_*tte 5 mysql sorting

我试图按字母顺序对我的mysql数据库进行排序,其中company_name是主要排序,但如果没有company_name,则按last_name排序.我将在下面列出一个例子.

company_name :(主要排序列)
1 ABC卡车运输
2天才加热
3
4 Xtreme Windows

last_name :(二级专栏)
1布莱恩特
2罗杰斯
3弗林特
4刘易斯

像这样的排序:
1 ABC卡车
3火石
2天才加热
4 Xtreme Windows

这甚至是可能的还是我应该将这些合并到一个数组中并使用php对它们进行排序?

use*_*723 6

只需选择一个列作为"名称",使用案例和顺序.以示例最佳显示.

SELECT
CASE WHEN company_name IS NULL THEN last_name ELSE company_name END AS name
FROM mytable
ORDER BY name ASC
Run Code Online (Sandbox Code Playgroud)

如果你真的想,你也可以在order by子句中使用case语句.
我认为上面的问题确实是一个更好的解决方案,因为你甚至不再拥有php中的逻辑,但你可能不同意.

SELECT company_name, last_name
FROM mytable
ORDER BY CASE WHEN company_name IS NULL THEN last_name ELSE company_name END ASC
Run Code Online (Sandbox Code Playgroud)

编辑:我只假设company_name IS NULL你的情况是正确的.如果你需要在不同的条件下这样做,那就是你自己的运动.它是空的吗?或者应该比较一下''呢?