一张表中根据一个字段分组,查询分组中另一个字段最大值

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/DingKG/article/details/81503899

一张表中根据一个字段分组,查询分组中另一个字段最大值


表:

id score uid
1 100 1
2 100 1
3 90 1
4 80 2
5 100 2
6 50 3
7 90 3
8 80 3

sql

select t.* from user_test_result t where score = (select max(score) from user_test_result where open_id = t.open_id) group by t.open_id;

结果:

id score uid
1 100 1
5 100 2
7 90 3
展开阅读全文

查询结果分组并取出各分组中的最大值

09-04

一张表(t_value)中有如下字段:rnid 主键,每条记录的idrnFid 外键, 另一张表的主键rntheMinValue 该条记录取值区间的最小值rntheMaxValue 该条记录取值区间的最大值rnrn然后我插入如下数据:rninsert into t_value values(1, 10, 1000, 2000);rninsert into t_value values(2, 10, 2000, 3000);rninsert into t_value values(3, 10, 3000, 4000);rninsert into t_value values(4, 10, 4000, 5000);rninsert into t_value values(5, 10, 5000, null); //特殊说明,如果theMaxValue字段值为null,则代表无穷大rninsert into t_value values(7, 20, 1000, 2000);rninsert into t_value values(8, 20, 2000, 3000);rninsert into t_value values(9, 20, 3000, 4000);rninsert into t_value values(10, 20, 4000, 5000);rninsert into t_value values(11, 20, 5000, null); //特殊说明,如果theMaxValue字段值为null,则代表无穷大rnrn可以看出一个Fid可以关联多个记录,现在我要查出已Fid分组,并取出分组中theMaxValue值最大的记录,即我要得到的结果是就是上面两条特殊说明的记录。rnrn我写的查询语句是这样的:rn[code=sql]rnselect id, Fid, theMinValue, theMaxValue from t_value rninner join(select Fid as maxValueFid, (case when theMaxValue is null then null else max(theMaxValue) end) as maxValue from t_value )rnon Fid = maxValueFid and theMaxValue = maxValuern[/code]rn但是查询的结果为空,请问我写的查询语句哪里错了?另外,有没有更好的查询方式呢? 论坛

没有更多推荐了,返回首页