MYSQL:按数组的平均值排序

1 php mysql arrays average sum

所以我在一个mysql表中有一个内爆数组,基本上只是一个数字序列(例如1,5,3,1,4,5),我想知道是否有可能按平均值排序它们(甚至如果可能的话,表中的数字组合的总和

egg*_*yal 9

利用MySQL的关系功能并规范化数据,而不是将数字存储在分隔的字符串中:将数字(key, value)成对存储在一个单独的表中,该表将外键(即现有表的外键)与列表中的单个数字相关联.如果订单很重要,请添加一个附加列以指示编号在列表中的位置.

CREATE TABLE `newtable` (
  `key`   INT,
  `value` INT,
  FOREIGN KEY (`key`) REFERENCES `existingtable` (`key`)
)
Run Code Online (Sandbox Code Playgroud)

然后,你只需要加入表一起,GROUP BY在现有的表中的键和ORDER BYAVG()SUM()在新表中的值; 你甚至可以使用MySQL的GROUP_CONCAT()函数回收逗号分隔列表:

SELECT   `existingtable`.*, GROUP_CONCAT(`newtable`.`value`) AS `values`
FROM     `existingtable` LEFT JOIN `newtable` USING (`key`)
GROUP BY `key`
ORDER BY AVG(`newtable`.`value`) -- or use SUM() if preferred
Run Code Online (Sandbox Code Playgroud)