注册 登录
编程论坛 SQL Server论坛

请教SQL语句查询

xuecg 发布于 2007-06-15 21:33, 736 次点击
存在一个产品型号表,几个主要的字段为
ProductID,产品名,型号,访问次数
我需要查询出每个产品中访问次数最多的一个型号,请问这个如何写?
多谢了
7 回复
#2
binbindenny2007-06-16 02:29
select * from 表名 where 访问次数=(select max(访问次数) from 表名)
这应该能行,不过语句麻烦了点
#3
xuecg2007-06-16 22:57
这个肯定不成了,我只是选择每个产品中的MAX(访问次数),你选择的是所有产品中的MAX(访问次数),后来有个强人帮我解决了一部分问题

SELECT a.ProductId, a.产品名, a.型号, a.访问次数
FROM 产品型号表 AS a, [SELECT 产品名, max(访问次数) as c
FROM 产品型号表 as b
GROUP BY 产品名]. AS b
WHERE a.产品名=b.产品名 and a.访问次数=c
ORDER BY a.访问次数 DESC;

只是这个没有办法解决每个产品中可能MAX(访问次数)型号不唯一的问题
#4
wehooooo2007-06-17 22:16
//我是这样认为的 是不是 produceid 唯一
//name 产品名会相同 type唯一 访问次数times可能相同
//test1产品型号表
select * from test1
where times in
(
select max(times) from test1
group by name
)

//
#5
fqbnet20082007-06-18 11:49

我同意三楼的说法,不过可以将sql稍微改一下:
go
select a.Pro_Id,a.Pro_Name,a.Pro_Type,a.Pro_Access from Product as a,

(select Pro_Name,Pro_Type,max(Pro_Access) as c from Product as b group by Pro_name,Pro_type) as b

where a.Pro_Name=b.Pro_Name and a.Pro_Access=c and a.Pro_Type=b.Pro_Type

order by a.Pro_Name,a.Pro_Access desc,a.Pro_Type

3 A 05 78
7 A 02 9
1 A 01 5
6 B 03 50
5 B 02 45
8 B 01 20



#6
xuecg2007-06-18 20:15
不说了,最后研究了很久也和别人探讨了好多,发现还是实现不了,只能间接的通过一个临时表来实现
#7
棉花糖ONE2007-06-18 21:41
ProductID,产品名,型号,访问次数
我需要查询出每个产品中访问次数最多的一个型号,请问这个如何写?

select * from table a where not exists(select 1 from table where productID=a.productID and 访问次数>a.访问次数)
#8
lzalibabalr2007-08-02 11:30
SELECT *
FROM tb AS t
WHERE t.访问次数>= ALL(SELECT 访问次数
FROM tb
WHERE productID=t.productID)
1