SQL语句如何写?高手请进(如果能帮我解决,我把所有的分都送上) (100分)

  • 主题发起人 主题发起人 lintel
  • 开始时间 开始时间
L

lintel

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个表T,三个字段A,B,C
执行下语句:
select max(B) from T group by A
我得到了对应唯一的A最大的B值,但是我同时还想得到此情况下的C值,不知道该如何作?
先谢谢各位了。
 
select max(B),max(c) from T group by A
 
我要取C的值不是Max(C)
 
select T.c,e.b from T,(select A,max(B) as b from T group by A) e where T.a=e.a
如有必要
select c, b=(select max(B) from T) from T
 
同样是不能得到正确结果
 
Select T.a, T.b, T.c
From T
Where T.a = (Select Max(T.a) From T Group By T.a)

应该可以。
 
select B, C from T where B in (select max(B) from T group by A)
 
哪个字段是主键
 
方法1:select B,C from T T1 where not exists(
select * from T T2 where T2.A=T1.A and T2.B>T1.B)
这是沉香屑的方法!
---------------------
方法2:SELECT B, C FROM T WHERE B IN (SELECT MAX(B) AS B FROM T GROUP BY A)
我的方法!

两种方法都可满足你的要求,方法1效率更高!(全都试过了)
-------------------------
老兄,这么急呀,要开两个贴子?

 
yes
就是象
 
例如表t有a,b,c,d字段,如下:
a b c d
1 10 1 11
1 9 2 22
2 8 3 33
2 9 4 44
3 6 5 55

按你的方法就得不到正确的方法,你可以自己试一下?

谢谢你的帮助,再帮我想一下,多谢!!!
 
//SanDao提到的沉香屑的方法还不错!
我的方法:
SELECT TT0.* FROM
(SELECT A,MAX(B) maxB,C FROM T GROUP BY A,C) AS TT0
JOIN --此处一定用JOIN而不用Left JOIN,否则成了按A,C分组的结果
(SELECT A,MAX(B) maxB FROM T GROUP BY A) AS TT1
ON
TT0.A=TT1.A AND TT0.maxB = TT1.maxB
 
SELECT TOP 1 T.A,t.C, Max(t.B) AS MaxB
FROM T
GROUP BY T.A, T.C
ORDER BY 3 DESC;
 
我要按a分组,不是按a,c分组
 
這樣寫不知對否
select a.A,b.* from
(select B, max(A) as A from TableName group by B) as a , --得對按B分組最大的A值
TableName b
where a.B=b.B
 
select b,c from t where b in (select max(b) from test group by a);
按照你的表得到的结果是
b c
1 10
2 9
4 9
5 6
如果你觉得这不是你想得到的结果,那就是你一开始的需求就表达错了。
其实楼上几个的回答大多也可以得到正确结果。只不过偶这个写起来最直接而已:)
 
a b c d
1 10 1 11
2 9 4 44
3 6 5 55

得到如上的结果才是需要的
 
SELECT a,b,c,d
from t
where str(a)+str(b) in
(select str(a)+str(max(b)) as ss from t group by a)
order by a
再试试,不过照你的结果,你先前提的要求提错了
 
我是要group by a,但是取b的最大的情况下也得到c
你给的是取b的最大了,不符合的。

 
接受答案了.
 
后退
顶部