首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

一条简单的查询SQL语句有关问题,请

2012-03-07 
一条简单的查询SQL语句问题,请高手指点比如我有一张表,分问ABCDEF字段F字段为版本号,A,B,C,F字段为主建,我

一条简单的查询SQL语句问题,请高手指点
比如我有一张表,分问   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

请高手指点。

[解决办法]
--方法一
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
[解决办法]
方法四:

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


[解决办法]
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还比我大的记录.那么查询出来就是分组去最大的记录
[解决办法]
2个表都是一张表

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


--方法一
可以这么理解,条件是找出 不存在 (Not exists ) 比当前值更小( F(当前值) > A.F(进行比较的值) )的记录 , 那么当前值就是最大的

热点排行