微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获得 20 个 sql 查询的最佳 8 个结果?

如何解决获得 20 个 sql 查询的最佳 8 个结果?

我需要获得最近 20 个条目中的 8 个最佳结果。 要获取最后 20 个条目,我使用以下查询

SELECT *
FROM uitslagen
WHERE lid_id = '12' AND type = 'comp' AND invoer = 'ja'
ORDER BY seizoen DESC,wedstrijd_nr DESC,lid_strokeplay_score ASC
LIMIT 20

但现在应该有一个子选择,可以获得 8 个最好/最低的 Lid_strokeplay_score 结果。

解决方法

这取决于“最好的结果”是什么意思。

如果您只需要从该数据集中获取前 8 条记录,您需要做的就是将 LIMIT 20 变为 LIMIT 8:

SELECT * 
  FROM uitslagen 
 WHERE lid_id = '12' 
   AND type = 'comp' 
   AND invoer = 'ja' 
 ORDER BY seizoen DESC,wedstrijd_nr DESC,lid_strokeplay_score ASC 
 LIMIT 8

如果您需要对这 20 行重新排序,最简单和最通用的方法是在这一行上使用另一个 select 语句:

SELECT * 
  FROM (SELECT * 
          FROM uitslagen 
         WHERE lid_id = '12' 
           AND type = 'comp' 
           AND invoer = 'ja' 
         ORDER BY seizoen DESC,lid_strokeplay_score ASC
        LIMIT 20)
ORDER BY /* here go all re-ordering criterias */
LIMIT 8
,

您的选择成为所谓的 derived table,您将其用作父 select 的输入

SELECT * FROM(
  SELECT * FROM uitslagen WHERE lid_id = '12' AND type = 'comp' AND invoer = 'ja' ORDER BY seizoen DESC,lid_strokeplay_score ASC LIMIT 20
)
ORDER BY lid_strokeplay_score ASC
LIMIT 8
,

ekochergin 和 Stu 的答案似乎是一样的。但是当我使用答案时,有一些错误。 这是我现在使用的代码:

$query = mysql_query("SELECT * FROM(
      SELECT * FROM uitslagen WHERE lid_id = '12' AND type = 'comp' AND invoer = 'ja' ORDER BY seizoen DESC,lid_strokeplay_score ASC LIMIT 20
    )
    ORDER BY lid_strokeplay_score ASC
    LIMIT 8");
    $result = mysql_num_rows($query);
    while($object = mysql_fetch_object($query)){
        $par_score = ($object->lid_strokeplay_score - '54');
    echo "$object->seizoen - $object->wedstrijd_nr - $object->lid_naam - $object->lid_stableford_score - $object->lid_strokeplay_score - $par_score<br>";
    }

我得到的错误是: 警告:mysql_num_rows() 期望参数 1 是资源,在 whs.php 第 6 行中给出的布尔值

警告:mysql_fetch_object():在第 7 行的 whs.php 中提供的参数不是有效的 MySQL 结果资源

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?