Chinaunix

标题: 请问这样的SQL要怎么写?? [打印本页]

作者: kitecn    时间: 2009-04-23 22:51
标题: 请问这样的SQL要怎么写??
表格式
AA  BB
a1  d
a1  f
a1  d
a1  d
b2 h
b2 i
b2 j

要取出AA列相同值的前三条,按BB列降序.多谢
结果
AA  BB
a1  f
a1  d
a1  d
b2 h
b2 i
b2 j

订正下。楼下所说正解。是我所说的意思

[ 本帖最后由 kitecn 于 2009-4-24 21:10 编辑 ]
作者: cenalulu    时间: 2009-04-24 17:13
你的需求跟你给出的结果不符合啊,根据你的要求结果应该是:
AA  BB
a1  f
a1  d
a1  d
b2 j
b2 i
b2 h
如果是这样的话,sql如下

select * from msort1 a where 3 > (select count(*) from msort1 as b where b.AA = a.AA and b.BB < a.BB) order by a.AA,a.BB desc
作者: 枫影谁用了    时间: 2009-04-24 17:36
标题: 回复 #2 cenalulu 的帖子
select * from msort1 a where 2 > (select count(*) from msort1 as b where b.AA = a.AA and b.BB < a.BB) order by a.AA,a.BB desc

好像应该是2吧?
作者: cenalulu    时间: 2009-04-24 17:44
标题: 回复 #3 枫影谁用了 的帖子
不是要前三条么?
作者: kitecn    时间: 2009-04-24 20:48
多谢。VFP居然不支持。是我同学要。。。我再研究下。
作者: kitecn    时间: 2009-04-24 21:08
我已导到access中测试。发现好慢
作者: magnet2008    时间: 2009-05-09 08:35
标题: 第一帖
我写了一个存储过程,希望有用。
create procedure topn()
begin
declare var varchar(10);
declare found boolean default true;
declare top cursor for
select m  from temp
group by m
having count(*)>2;
declare continue handler for not found
set found=false;
create temporary table vartable
(one varchar(10),
two varchar(10))
engine=heap;
open top;
fetch top into var;
while found do
insert into vartable
(select * from temp
where m=var
order by 2 desc
limit 3 );
fetch top into var;
end while;
close top;
select * from vartable  ;
end




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2