finterid fitemid fprice
1 a 1
2 b 2
3 c 2
4 a 3
5 b 4
.
.
.
finterid 字段没有重复的值
我自己写的语句使这样的:
select fitemid, max(FInterid),fprice from a group by Fitemid,fprice order by a.fitemid
因为我把fprice也group by 了,所以得出的结果的话,例如这个表,fitemid有有行值,
fprice不group by 的话,又语法错误~其他的聚合函数也没一个适用的,怎么办呢
11 个解决方案
#1
select * from a t
where not exists(select 1 from a where t.fitemid=fitemid and t.FInterid<FInterid)
#2
不懂 你的意思》
#3
你的select 1 又是什么意思
#4
楼主你是想要什么样的结果呢?
#5
price 字段不能为字符串
select * from a where(finterid in(selct max(fprice )from a group by Fitemid ))
select * from a where(finterid in(selct max(fprice )from a group by Fitemid ))
#6
假如有最大值的记录是多笔怎么办哪?
实际上你需要在得出最大值的结果集上再链接查询出对应的记录。
#1楼 的结果就符合你的要求。
但是还是会存在对应最大值的记录有多笔的问题
实际上你需要在得出最大值的结果集上再链接查询出对应的记录。
#1楼 的结果就符合你的要求。
但是还是会存在对应最大值的记录有多笔的问题
#7
我要查的是finterid最大值对应过去的Fprice
GROUP by 里面如果写上fprice的话,会用同一个fitemid 出现两个值
我就是想避免这种结果
#8
select a.* from 表a a inner join (select max(FInterid) as maxf from 表a group by fitemid) b on a.finterid=b.maxf
是不是这样?
听楼主的意思好像是取一个字段的最大值,然后根据这个最大值,取表中的记录,是这个意思吧
你先把最大值取出来,再根据最大值取值就可以了
#9
如果你要取的是finterid的最大值,那么直接这样就一了
select a.* from 表a a inner join (select max(FInterid) as maxf from 表a) b on a.finterid=b.maxf
#10
不行,没能得出我要的结果
#11
select a.fprice from a t1 inner join (select t1.fitemid, max(t1.FInterid) as finterid from a t1 group by t1.Fitemid order by t1.fitemid) t2 on t1.fitemid = t2.fitemid and t1.finterid = t2.finterid
我先得出每个fitemid的最大值,再从里面分别找fprice,这样写提示
除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。
#1
select * from a t
where not exists(select 1 from a where t.fitemid=fitemid and t.FInterid<FInterid)
#2
不懂 你的意思》
#3
你的select 1 又是什么意思
#4
楼主你是想要什么样的结果呢?
#5
price 字段不能为字符串
select * from a where(finterid in(selct max(fprice )from a group by Fitemid ))
select * from a where(finterid in(selct max(fprice )from a group by Fitemid ))
#6
假如有最大值的记录是多笔怎么办哪?
实际上你需要在得出最大值的结果集上再链接查询出对应的记录。
#1楼 的结果就符合你的要求。
但是还是会存在对应最大值的记录有多笔的问题
实际上你需要在得出最大值的结果集上再链接查询出对应的记录。
#1楼 的结果就符合你的要求。
但是还是会存在对应最大值的记录有多笔的问题
#7
我要查的是finterid最大值对应过去的Fprice
GROUP by 里面如果写上fprice的话,会用同一个fitemid 出现两个值
我就是想避免这种结果
#8
select a.* from 表a a inner join (select max(FInterid) as maxf from 表a group by fitemid) b on a.finterid=b.maxf
是不是这样?
听楼主的意思好像是取一个字段的最大值,然后根据这个最大值,取表中的记录,是这个意思吧
你先把最大值取出来,再根据最大值取值就可以了
#9
如果你要取的是finterid的最大值,那么直接这样就一了
select a.* from 表a a inner join (select max(FInterid) as maxf from 表a) b on a.finterid=b.maxf
#10
不行,没能得出我要的结果
#11
select a.fprice from a t1 inner join (select t1.fitemid, max(t1.FInterid) as finterid from a t1 group by t1.Fitemid order by t1.fitemid) t2 on t1.fitemid = t2.fitemid and t1.finterid = t2.finterid
我先得出每个fitemid的最大值,再从里面分别找fprice,这样写提示
除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。