首先,我看了很多已经存在的问题,但无法找出任何描述我问题的人。
我有以下数组结构:
Array(
0 => Array(
[customerID] => 3
[forename] =>
[name] =>
[company] => Third company
)
1 => Array(
[customerID] => 2
[forename] => Jane
[name] => Smith
[company] =>
)
2 => Array(
[customerID] => 1
[forename] => John
[name] => Smith
[company] => Best Company
)
)
通常我想在HTML选择字段中打印forename和(last)名称。它适用于最后两个数组键但不适用于第一个数组键,因为它没有forename或(last)名称。打印公司名称没有问题,但问题是订单。
我使用ORDER BY forename ASC
从数据库中选择数组,因此每次都没有forename和(last)名称的数组是第一个值。
在这种情况下,我希望订单是Array(1),Array(2),Array(0),这样字母顺序仍然存在(Jane,John,Third公司),但我无法弄清楚如何实现这一点排序类型,以便尊重forename键和公司键,并将它们组合排序。
如果公司名称为Beta
,则Array(0)应保留在第一位,如果公司名称为Jesse James Ltd.
,则应在其他两个阵列之间进行排序。
任何建议都会受到赞赏。
答案 0 :(得分:1)
这将根据列对行进行排序,如果列值为空,它将显示在结果的末尾。
www.example.com
修改强>
好的,根据我的理解,这应该有效。如果这不是你想要的,请随时告诉我。
SELECT * FROM table_name ORDER BY IF(foreName = '', 1, 0), foreName;
这个想法基本上是加入两列并根据它进行排序。
答案 1 :(得分:0)
按forename
字段按升序排序,但将带有空值的记录放在行集的末尾:
SELECT customerID, forename, name, company
FROM table
ORDER BY IF (`forename` <> '', 0, 1) ASC
答案 2 :(得分:0)
您是否只能使用(if)条件检查空白值并跳过它?