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

我试图按字母顺序对我的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对它们进行排序?

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

SELECT
CASE WHEN company_name IS NULL THEN last_name ELSE company_name END AS name
FROM mytable
ORDER BY name ASC

如果你真的想,你也可以在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

编辑:我只假设company_name IS NULL对你来说是正确的.如果你需要在不同的条件下这样做,那就是你自己的运动.它是空的吗?或者应该将它与”进行比较?

转载注明原文:MYSQL – 按字母顺序排序2列,如果第一列为空,则使用第二列 - 代码日志