首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对SQL查询进行排序而不是对表进行排序

对SQL查询进行排序而不是对表进行排序
EN

Stack Overflow用户
提问于 2015-03-25 13:22:18
回答 3查看 78关注 0票数 0

我有一个包含大量信息的数据库,用户可以使用PHP查询这些信息来与MySQL数据库通信。我也想把他们的结果限制在最多300个,我已经成功地做到了。但是,我也希望按数据集名称对结果进行排序。是否有一种方法来排序结束查询,而不是原始表?根据我在网上看到的内容,查询中的ORDER语句对整个表进行排序,然后对查询进行排序(或类似的操作),这样会更有效,因为您只对15条记录进行排序,而不是1500000条。如果有帮助,我会使用以下语法将结果打印到页面:

代码语言:javascript
复制
while ($row = mysql_fetch_array($result)) {
...
}

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-25 13:38:12

若要创建子表,并且只能对其进行排序,可以尝试如下所示:

代码语言:javascript
复制
Select * from ( QUERY limit 300) a order by COLUMN
票数 0
EN

Stack Overflow用户

发布于 2015-03-25 13:26:16

如果结果集有限,请将其保存到php数组中,然后使用php排序函数:http://php.net/manual/en/function.usort.php

代码语言:javascript
复制
$all = array();
while ($res = mysql_fetch_array($result)) { 
    $all[] = $res;
}
usort($all, function($a,$b) {
    return $a['field'] < $b['field'];
});
票数 1
EN

Stack Overflow用户

发布于 2015-03-25 13:29:54

只需确保您正在排序的有一个不错的索引和排序选项应该非常快。在限制之前/之后排序的问题是,如果可能的话(按照逻辑对组进行一点排序),它将改变实际的结果,而不是它们返回的顺序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29256904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档