问题是这样的. 进行一个常规的查询,按字段a进行倒序排列. 但是又想获得这次查询中字段b的最大值
php好像没有提供直接获取多维数组最大键值的函数.. 要自己写排序也不是不可以 但是还是想问下 在mysql这边能否直接查出来(并且不能有太多的性能损失 否则不如去用php计算了)
谢谢
5 个解决方案
#1
mysql 提供有 max 函数,不过这是聚类函数,不大适合你的场景
取出数据时不是要有一个循环吗?在循环里顺带做了(用 max 函数)不就可以了吗?
取出数据时不是要有一个循环吗?在循环里顺带做了(用 max 函数)不就可以了吗?
#2
恩,如果mysql这边不方便的话 那还是用php计算吧 目前我把字段b的值都提取到一个数组中然后arsort()然后取第一个
#3
$m = 0;
while($row = mysql_assoc($rs)) {
$res[] = $row; //这是通常的数据接收
$m = max($m, $row['b']); //顺便计算一下 b 列的最大值
}
while($row = mysql_assoc($rs)) {
$res[] = $row; //这是通常的数据接收
$m = max($m, $row['b']); //顺便计算一下 b 列的最大值
}
#4
搭车问个问题,mysql查询的时候,多个where条件 它们的排序是否会影响到查询效率?
假设有一百万条记录
把id>500000 and b字段 <>"" 两个条件互换位置,效率会变化吗?
#5
有无索引很关键
#1
mysql 提供有 max 函数,不过这是聚类函数,不大适合你的场景
取出数据时不是要有一个循环吗?在循环里顺带做了(用 max 函数)不就可以了吗?
取出数据时不是要有一个循环吗?在循环里顺带做了(用 max 函数)不就可以了吗?
#2
恩,如果mysql这边不方便的话 那还是用php计算吧 目前我把字段b的值都提取到一个数组中然后arsort()然后取第一个
#3
$m = 0;
while($row = mysql_assoc($rs)) {
$res[] = $row; //这是通常的数据接收
$m = max($m, $row['b']); //顺便计算一下 b 列的最大值
}
while($row = mysql_assoc($rs)) {
$res[] = $row; //这是通常的数据接收
$m = max($m, $row['b']); //顺便计算一下 b 列的最大值
}
#4
搭车问个问题,mysql查询的时候,多个where条件 它们的排序是否会影响到查询效率?
假设有一百万条记录
把id>500000 and b字段 <>"" 两个条件互换位置,效率会变化吗?
#5
有无索引很关键