Php 按字母顺序按2列排序,混合两列而不是单独排序

Php 按字母顺序按2列排序,混合两列而不是单独排序,php,mysql,sorting,mysqli,Php,Mysql,Sorting,Mysqli,我有两种类型的记录,一种是以所有者名称开头的记录,另一种是以公司名称开头的记录 我需要按字母顺序输出所有这些记录。比如像这样 Apple (company) Bradley (name) Tim (name) Xerox (company) 目前所有的记录都是单独排序的,所以首先是公司名称排序,然后是名称排序,结果就是这样 Apple (company) Xerox (company) Bradley (name) Tim (name) 这是我当前的查询: $all = "SELECT *

我有两种类型的记录,一种是以所有者名称开头的记录,另一种是以公司名称开头的记录

我需要按字母顺序输出所有这些记录。比如像这样

Apple (company)
Bradley (name)
Tim (name)
Xerox (company)
目前所有的记录都是单独排序的,所以首先是公司名称排序,然后是名称排序,结果就是这样

Apple (company)
Xerox (company)
Bradley (name)
Tim (name)
这是我当前的查询:

$all = "SELECT * FROM refs ORDER BY a_s_name ASC, company_a ASC"; 
因此,为了确认,我需要对记录进行混合排序,以便它们按字母顺序排列,无论是公司还是名称


感谢您的帮助

您的问题并不清楚,但我认为您的表格实际上是这样的:

+----------+-----------+--------------+-------------+-----+
| a_s_name | company_a | other_column | another_one | ... |
+----------+-----------+--------------+-------------+-----+
| NULL     | Apple     | foo          | bar         | ... |
| Bradley  | NULL      | foo          | bar         | ... |
| Tim      | NULL      | foo          | bar         | ... |
| NULL     | Xerox     | foo          | bar         | ... |
+----------+-----------+--------------+-------------+-----+
如果这是正确的,我将按
IFNULL()
条件订购:

SELECT * FROM refs ORDER BY IFNULL(a_s_name, company_a) ASC
这样,如果
a_s_name
列包含
NULL
值,则
company_a
的值用于排序

如果列不包含
NULL
值,但包含空字符串,则可以使用通用的
If()

SELECT * FROM refs ORDER BY IF(a_s_name = '', company_a, a_s_name) ASC
Edit:对于
NULL
-值,Mark Baker建议的
COALESCE()
选项实际上可能更快:

SELECT * FROM refs ORDER BY COALESCE(a_s_name, company_a) ASC

您的表中存储了什么?@PaulSpiegel表中存储的是书籍和网站中引用的参考资料。。。有些人有作者,有些人有公司,所以他们需要按字母顺序排序,这样我就可以输出一个完整的列表。有作者和公司吗<代码>“通过合并(公司名称,公司名称)ASC从参考订单中选择*”发布一些样本数据。从数据库中?我将上传一张带有虚拟数据的图片。这是一个完美的答案,帮助很大。非常感谢,5分钟计时器一到,我就接受正确的:)再次感谢这是一个非常有效的查询:$all=“SELECT*FROM refs ORDER BY IF(a__名称=”,company_a,a_名称)ASC”;谢谢:)有人能让我知道我在第一个问题上做错了什么,这样我就可以在下次改进我的问题吗?