【问题标题】:MySQL Is Ordering All Rows Except OneMySQL 正在对除一行之外的所有行进行排序
【发布时间】:2015-12-03 21:29:53
【问题描述】:

我正在尝试按升序从数据库中检索项目编号。

这些行看起来像这样:

-- project number --
       1199.7
       1053.2
       1020
       1023-D
       1023-C
       1023-B
       50
       34.3T
       870-W

这是我检索和排序数据的查询:

$this->db->select('Project');
$this->db->from('`active_projects`');
$this->db->order_by('Project + 0, Project');

部分表格的输出:

我的问题是,为什么 127 卡在中间而不是顶部?我认为它看起来与 1270 相同,只是没有附加 0,但我不确定。有人可以帮我解决吗?

【问题讨论】:

  • 搜索“mysql自然顺序”,有几个解决办法

标签: php mysql sorting sql-order-by


【解决方案1】:

因为您的数据类型是字符串并且按字母顺序排列。

使用order_by('cast(Project as UNSIGNED), Project');

【讨论】:

  • 那么,我该如何解决呢?
  • 和以前一样的输出。
  • @Nik,试试UNSIGNED 而不是decimal
  • 刚刚更新为使用UNSIGNED,除 127 外,所有内容都按正确顺序排列。不知道为什么它不会移动..
【解决方案2】:

您可以使用 php.ini 中的 natsort() 函数。

$array = $result_from_query;

$sorted_array = natsort($array);

现在只返回排序后的数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多