【问题标题】:How to sort a array value using PHP mysql query如何使用 PHP mysql 查询对数组值进行排序
【发布时间】:2017-04-05 03:07:33
【问题描述】:

我的数据库表字段包含数据数组的值,我需要单独对第一个值进行排序

Pid | Price
  1 | 213,4566,112
  2 | 100,452,567
  3 | 653,344,6322
  4 | 55,222,42,44
  5 | 522

我希望它按价格第一个值按升序排序,如下所示

Pid | Price    
  4 | 55,222,42,44
  2 | 100,452,567
  1 | 213,4566,112
  5 | 522
  3 | 653,344,6322

我需要一个使用 PHP 的 Mysql 查询。

【问题讨论】:

  • 您不应该将逗号分隔的数据存储到这样的字段中。您应该使用单独的表来存储价格,每个价格一行(因此,如果您在该表中查找 pid,您会得到多行)。

标签: php mysql arrays sorting


【解决方案1】:

您可以通过SUBSTRING_INDEX 使用以下查询:

SELECT * FROM table 
ORDER BY CAST(SUBSTRING_INDEX(Price, ',', 1) AS SIGNED) ASC

演示: http://sqlfiddle.com/#!9/3f7b7/2

提示:您应该避免使用逗号分隔值的 Price 之类的列。
规范化您的数据库/表!

【讨论】:

  • 我想你可能真的想使用CAST(SUBSTRING_INDEX(Price, ',', 1) AS SIGNED),所以它们被排序为数字,而不是字符串。否则100 (Pid 2) 可能是第一个。
  • @RocketHazmat - 没错!更新并添加了演示
猜你喜欢
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
相关资源
最近更新 更多