请教个mysql问题.关于获取查询结果中某一个字段的最大值..(按照其他字段排序)

时间:2023-01-29 15:31:22
每次求助这样的问题都蛮不好意思的...  不过经常来不及去查手册找办法... 只好再伸下手...

问题是这样的.  进行一个常规的查询,按字段a进行倒序排列. 但是又想获得这次查询中字段b的最大值

php好像没有提供直接获取多维数组最大键值的函数.. 要自己写排序也不是不可以  但是还是想问下 在mysql这边能否直接查出来(并且不能有太多的性能损失 否则不如去用php计算了)

谢谢

5 个解决方案

#1


mysql 提供有 max 函数,不过这是聚类函数,不大适合你的场景

取出数据时不是要有一个循环吗?在循环里顺带做了(用 max 函数)不就可以了吗?

#2


引用 1 楼 xuzuning 的回复:
mysql 提供有 max 函数,不过这是聚类函数,不大适合你的场景

取出数据时不是要有一个循环吗?在循环里顺带做了(用 max 函数)不就可以了吗?


恩,如果mysql这边不方便的话  那还是用php计算吧  目前我把字段b的值都提取到一个数组中然后arsort()然后取第一个

#3


$m = 0;
while($row = mysql_assoc($rs)) {
  $res[] = $row; //这是通常的数据接收
  $m = max($m, $row['b']); //顺便计算一下 b 列的最大值
}

#4


引用 1 楼 xuzuning 的回复:


搭车问个问题,mysql查询的时候,多个where条件  它们的排序是否会影响到查询效率?

假设有一百万条记录

把id>500000 and b字段 <>"" 两个条件互换位置,效率会变化吗?

#5


有无索引很关键

#1


mysql 提供有 max 函数,不过这是聚类函数,不大适合你的场景

取出数据时不是要有一个循环吗?在循环里顺带做了(用 max 函数)不就可以了吗?

#2


引用 1 楼 xuzuning 的回复:
mysql 提供有 max 函数,不过这是聚类函数,不大适合你的场景

取出数据时不是要有一个循环吗?在循环里顺带做了(用 max 函数)不就可以了吗?


恩,如果mysql这边不方便的话  那还是用php计算吧  目前我把字段b的值都提取到一个数组中然后arsort()然后取第一个

#3


$m = 0;
while($row = mysql_assoc($rs)) {
  $res[] = $row; //这是通常的数据接收
  $m = max($m, $row['b']); //顺便计算一下 b 列的最大值
}

#4


引用 1 楼 xuzuning 的回复:


搭车问个问题,mysql查询的时候,多个where条件  它们的排序是否会影响到查询效率?

假设有一百万条记录

把id>500000 and b字段 <>"" 两个条件互换位置,效率会变化吗?

#5


有无索引很关键