当前位置: 首页 > article >正文

sql获取每一个类别中值最大的一条数据

/*
数据如下:
name val memo
a    2   a2(a的第二个值)
a    1   a1--a的第一个值
a    3   a3:a的第三个值
b    1   b1--b的第一个值
b    3   b3:b的第三个值
b    2   b2b2b2b2
b    4   b4b4
b    5   b5b5b5b5b5
*/
--创建表并插入数据:
create table tb(name varchar(10),val int,memo varchar(20))
insert into tb values('a',    2,   'a2(a的第二个值)')
insert into tb values('a',    1,   'a1--a的第一个值')
insert into tb values('a',    3,   'a3:a的第三个值')
insert into tb values('b',    1,   'b1--b的第一个值')
insert into tb values('b',    3,   'b3:b的第三个值')
insert into tb values('b',    2,   'b2b2b2b2')
insert into tb values('b',    4,   'b4b4')
insert into tb values('b',    5,   'b5b5b5b5b5')
go--一、按name分组取val最大的值所在行的数据。
--方法1:
select a.* from tb a where val = (select max(val) from tb where name = a.name) order by a.name
--方法2:
select a.* from tb a where not exists(select 1 from tb where name = a.name and val > a.val)
--方法3:
select a.* from tb a,(select name,max(val) val from tb group by name) b where a.name = b.name and a.val = b.val order by a.name
--方法4:
select a.* from tb a inner join (select name , max(val) val from tb group by name) b on a.name = b.name and a.val = b.val order by a.name
--方法5
select a.* from tb a where 1 > (select count(*) from tb where name = a.name and val > a.val ) order by a.name
/*
name       val         memo                 
---------- ----------- -------------------- 
a          3           a3:a的第三个值
b          5           b5b5b5b5b5
*/

如果上述存在一个name组中有两个以上相同的val,则查询方法1-5不正确。

例如:

insert into tb values('a',    2,   'a2(a的第二个值)') 
insert into tb values('a',    3,   'a1--a的第一个值') 
insert into tb values('a',    3,   'a3:a的第三个值') 

http://www.lryc.cn/news/2418502.html

相关文章:

  • 优秀网站源码、编程源码下载网站大集中(转载-自己用)
  • Asp.Net期末课程设计——个人财务管理系统(C#)(mysql或sqlserver)
  • 设定行车路线实验matlab,基于遗传算法的无时限多配送中心车辆调度问题研究
  • 爬虫小白看过来!详细的Python爬虫分析和案例展示
  • 最好用的WiFi密码共享APP推荐(能查看已连接WiFi密码)
  • Visifire WPF 图表控件 破解
  • MySQL里有2000万条数据,但是Redis中只存20万的数据,如何保证redis中的数据都是热点数据?
  • 思科模拟器--02.静态路由和默认路由配置24.5.15(24.5.20补)
  • ubuntu下安装杀毒软件Antivir
  • 2024年最全OpenGL学习脚印 使用索引绘图(index drawing),2024年最新玩转MySQL
  • 【网络奇缘】- 如何自己动手做一个五类 以太网 RJ45 网络电缆(1)
  • 数据库入口和密码:维普、万方和cnki(转)
  • codeblocks 汉化教程
  • Gtalk基本功能完成
  • Win7系统提示找不到audiosrv.dll文件的解决办法
  • NOD32离线升级更新包使用方法
  • C# ASP.NET校园外卖网站管理系统源码 前台+后台
  • iebook超级精灵2008 专业版破解
  • robots协议相关知识(摘转自360百科)
  • 安卓系统一键root
  • Vue.js教程
  • 【单片机】2.8 AT89S52单片机的最小应用系统
  • 模型蒸馏探索(Bert)
  • 3D模型动画素材来源
  • 光棍节程序员闯关秀第1关(总共10关)
  • shsh备份工具_A12A13 iOS13备份shsh2简易工具/附详细教程
  • Temple Run的终点
  • 文件下载时直接对流进行zip加密压缩
  • 百度文心一言api 调用ERNIE-3.5-8K,Python技术开发文档
  • 三维装箱模型