一条简单的查询SQL语句问题,请高手指点

zhangqin110 2007-08-07 09:05:53
比如我有一张表,分问 A B C D E F 字段 F字段为版本号,A,B,C, F字段为主建,我要查出基于A,B,C,F段不同的情况下并且F字段为最大值的所有行
比如我有一张
A B C D E F
1 01 01 a b 0.1
1 01 01 a b 0.2
1 01 01 a b 0.3
2 01 02 a b 0.1
2 01 02 a b 0.2
2 01 02 a b 0.3
3 01 01 a b 0.3
3 01 01 a b 0.4
3 01 01 a b 0.5

像以上的这张表,我要查出 A,B,C字段都相同的情况下查出F字段最大的那个值的一行,以上我查出来的结果要为
A B C D E F
1 01 01 a b 0.3
2 01 02 a b 0.3
3 01 01 a b 0.5

请高手指点。
...全文
125 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangqin110 2007-08-07
  • 打赏
  • 举报
回复
paoluo(一天到晚游泳的鱼) ( ) 你真是高手。
zyug 2007-08-07
  • 打赏
  • 举报
回复
说反了,不好意思,你自己理解一下吧

zyug 2007-08-07
  • 打赏
  • 举报
回复
2个表都是一张表

一张表里面的数据进行一对一比较,找出最大的


--方法一
可以这么理解,条件是找出 不存在 (Not exists ) 比当前值更小( F(当前值) > A.F(进行比较的值) )的记录 , 那么当前值就是最大的
haonanernet 2007-08-07
  • 打赏
  • 举报
回复
Select * From 表 A Where Not Exists(Select F From 表 Where A = A.A And B = A.B And C = A.C And F > A.F)
----------------
就拿这句来说:就是在表中不存在按照A,B,C分组后F还比我大的记录.那么查询出来就是分组去最大的记录
paoluo 2007-08-07
  • 打赏
  • 举报
回复
zhangqin110() ( ) 信誉:100 2007-08-07 09:19:49 得分: 0


我请问下楼上的高手我就一张表啊,好比这个表的名字叫 user
我怎么看到你上面好象有2张表啊?你能不能写的清楚点啊?


-----------------------
使用的就是一張表。

如果表名是user,

try


--方法一
Select * From [user] A Where Not Exists(Select F From [user] Where A = A.A And B = A.B And C = A.C And F > A.F)

--方法二
Select * From [user] A Where F = (Select Max(F) From [user] Where A = A.A And B = A.B And C = A.C)

--方法三
Select A.* From [user] A
Inner Join
(Select A, B ,C, Max(F) As F From [user] Group By A, B, C) B
On A.A = B.A And A.B = B.B And A.C = B.C And A.F = B.F
haonanernet 2007-08-07
  • 打赏
  • 举报
回复
A是表的别名
chuxue1342 2007-08-07
  • 打赏
  • 举报
回复
mark!!
zhangqin110 2007-08-07
  • 打赏
  • 举报
回复
我请问下楼上的高手我就一张表啊,好比这个表的名字叫 user
我怎么看到你上面好象有2张表啊?你能不能写的清楚点啊?
haonanernet 2007-08-07
  • 打赏
  • 举报
回复
方法四:

Select * From 表 A Where F
(Select count(1) From 表 Where A = A.A And B = A.B And C = A.C and F>A.F) = 0

paoluo 2007-08-07
  • 打赏
  • 举报
回复
--方法一
Select * From 表 A Where Not Exists(Select F From 表 Where A = A.A And B = A.B And C = A.C And F > A.F)

--方法二
Select * From 表 A Where F = (Select Max(F) From 表 Where A = A.A And B = A.B And C = A.C)

--方法三
Select A.* From 表 A
Inner Join
(Select A, B ,C, Max(F) As F From 表 Group By A, B, C) B
On A.A = B.A And A.B = B.B And A.C = B.C And A.F = B.F

62,067

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧