gpt4 book ai didi

Mysql JOIN查询MAX值

转载 作者:太空宇宙 更新时间:2023-11-03 11:09:40 24 4
gpt4 key购买 nike

这是我遇到的问题的例子。查询应返回行 paulrick,因为它们在子行中的评级最高。相反,查询返回 daveowen,我猜是因为它们是第一个子行。我按 position 分组并使用 MAX(child.rating) 但查询没有像我希望的那样工作。在实际表中,我有很多列,这就是为什么我在 select 子句中使用 child.*

我的表格

  id |  name | parentid|  position| rating  |
1 | mike | 1 | 1 | 6 |
2 | dave | 1 | 2 | 5 |
3 | paul | 1 | 2 | 7 |
4 | john | 1 | 2 | 3 |
5 | mike | 5 | 1 | 8 |
6 | owen | 5 | 2 | 2 |
7 | rick | 5 | 2 | 9 |
8 | jaye | 5 | 2 | 3 |



$getquery = mysql_query("SELECT MAX(child.rating),child.* FROM mytable child
LEFT JOIN mytable parent on parent.parentid=child.parentid
WHERE parent.name LIKE '%mike%' GROUP BY child.position,child.parentid");



while($row=mysql_fetch_assoc($getquery)) {

$id = $row['id'];
$name = $row['name'];
$parentid = $row['parentid'];



if($id==$parentid) {
continue;
}
echo "<p>Name: $name </p>";

}

最佳答案

您可以在 from 子句中使用子查询来首先找出每个父项的最大评分是多少,然后获取具有该评分的子级:

select * 
from mytable c
join
(select parentid, max(rating) as 'maxrating'
from mytable m
group by parentid) as q on c.parentid=q.parentid and c.rating = q.maxrating;

关于Mysql JOIN查询MAX值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9452895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com