我需要获得最近 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 结果。
答案 0 :(得分:0)
这取决于“最好的结果”是什么意思。
如果您只需要从该数据集中获取前 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, wedstrijd_nr DESC, lid_strokeplay_score ASC
LIMIT 20)
ORDER BY /* here go all re-ordering criterias */
LIMIT 8
答案 1 :(得分:0)
您的选择成为所谓的 derived table
,您将其用作父 select
的输入
SELECT * FROM(
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
)
ORDER BY lid_strokeplay_score ASC
LIMIT 8
答案 2 :(得分:0)
ekochergin 和 Stu 的答案似乎是一样的。但是当我使用答案时,有一些错误。 这是我现在使用的代码:
$query = mysql_query("SELECT * FROM(
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
)
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 结果资源