回 帖 发 新 帖 刷新版面

主题:谢过大虾,sql查询问题(在线等)

这是一个投票结果,数据表vote的格式如下:
物品名称  价格   票数
a         13     22
a         12     22
a         15     19
a         17     14
b         21     45
b         22     41
b         23     40
b         20     50
查询要求是:用sql语句把每种物品名称按照票数最高选出前三名,如果票数相同按照价格最低选.应该得出的结果如下:
物品名称  价格   票数
a         13     22
a         12     22
a         15     19
b         20     50
b         21     45
b         22     41
要实现上述结果的sql语句该怎么写?
我试了好多次都不对,请各位大虾帮忙,小弟这里先谢过了

回复列表 (共1个回复)

沙发

select * from 表名 a
where 价格 in (select top 3 价格 from haha
where 物品名称 = a.物品名称
order by 票数 desc,价格)
其实这样也有点问题,如果a产品的价格和b产品的价格相等的话,选出来的记录就可能多。也有办法避免,但是我不知道你字段是什么类型的。所以不好写。假如都是字符的话,可以这样写,不是的话,你转化一下:
select * from 表名 a
where 物品名称+价格 in (select top 3  物品名称+价格 from haha
where 物品名称 = a.物品名称
order by 票数 desc,价格)

我来回复

您尚未登录,请登录后再回复。点此登录或注册