我有一个应该在数据库中搜索最高'得分'的函数。 Db的结构如下:
----------------------------------------
| id | UrlId | Article | Score |
----------------------------------------
我可以正确获得最高分,但我不知道如何根据最高分返回完整对象。 我不愿意遍历整个表并测试'得分'的值以查看哪个是最高的(尽管我输入的是我怀疑我还在做什么),因为db可能有10000个记录。 我确信这很简单,但我有“愚蠢的我今天无法大脑”有人知道更优雅的解决方案吗?
我的最终结果必须是这样的: 如果有4个UrlId; s具有相同的最高分,则用户需要查看:
UrlId example1 20(得分)
UrlId example2 20(得分)
UrlId example3 20(得分)
UrlId example4 20(得分)
不会显示所有其他结果。
function gethappiestBlog() {
$happiestBlogs = /* This is the data that I loop through, this is correct */
$happinessArray = array();
foreach($happiestBlogs as $happiestBlog) {
$happinessArray[]= $happiestBlog->Score;
}
$maxHappy = max($happinessArray);
echo $maxHappy;
}
答案 0 :(得分:2)
SELECT fieldlist
FROM `tableName`
WHERE `score` = (SELECT MAX(`score`) FROM `tableName`)
答案 1 :(得分:-1)
你不能使用查询吗?
SELECT *
FROM table_name
ORDER BY score
DESC LIMIT 1;
如果您需要多个分数,则可以使用子查询:
SELECT *
FROM table_name
WHERE score =
(SELECT score
FROM table_name
ORDER BY score
DESC LIMIT 1;
);
答案 2 :(得分:-1)
试试这个。
$dbh=new PDO(DSN,USERNAME,PASSWORD);
$stmt=$dbh->prepare("SELECT * FROM TABLE_NAME ORDER BY Score DESC");
$stmt->execute();
while($happiestBlog=$stmt->fetch(PDO::FETCH_OBJ)):
echo $happiestBlog->Score;
endwhile;
此处ORDER BY Score DESC
首先获取得分最高的行。