表product。
productid(主键),dealerid(商家id),pic(图片),productname(产品名称)
1 1 url1 a
2 1 url2 b
3 2 url3 c根据dealerid分组,每个dealerid只能取出一行数据。注意是一行数据。比如这个可以取出 2,3两行或者1,3两行。这样的sql不可以的select dealerid,max(productid),max(pic),max(productname) from product group by dealerid 这样只保证了其他列取出一个,并不能保证取出的都是一行的。
productid(主键),dealerid(商家id),pic(图片),productname(产品名称)
1 1 url1 a
2 1 url2 b
3 2 url3 c根据dealerid分组,每个dealerid只能取出一行数据。注意是一行数据。比如这个可以取出 2,3两行或者1,3两行。这样的sql不可以的select dealerid,max(productid),max(pic),max(productname) from product group by dealerid 这样只保证了其他列取出一个,并不能保证取出的都是一行的。
解决方案 »
- 取存储过程output
- 请教SQL语句
- MSSQL 如何修复 表
- sql server 2000 转换 MySql
- 请问如何用OPENROWSET或OpenDataSource对文本文件执行分布式查询?
- Rank() 求算法或优化方案
- 我賣了一個刻的SQL SERVER2000英文版﹐用在繁體版Windows2000S上安裝﹐但是安裝程序把‘Client and Server TOOLS’顯項屏蔽掉了﹐請問這
- 大家帮我,急...........
- 请问这两种方法,哪种的速度更快?
- 请问在SQL SERVER中如何实现VB中的 On Error Resume Next功能?
- 求sql语句!谢谢了!!实在是没分了!
- 求sql语句!!
SELECT MAX(productid) FROM product GROUP BY dealerid
)
go
create table [product] (productid int,dealerid int,pic nvarchar(8),productname nvarchar(2))
insert into [product]
select 1,1,'url1','a' union all
select 2,1,'url2','b' union all
select 3,2,'url3','c'select * from [product]SELECT *
FROM product P
WHERE NOT EXISTS ( SELECT 1
FROM product M
WHERE P.dealerid = M.dealerid
AND P.pic > M.pic ) --选最大或最小,lz可以从这里调整/*
productid dealerid pic productname
----------- ----------- -------- -----------
1 1 url1 a
3 2 url3 c(2 行受影响)*/
WITH huang
AS ( SELECT ROW_NUMBER() OVER ( PARTITION BY dealerid ORDER BY productid ) pid ,
productid ,
dealerid ,
pic ,
productname
FROM product
)
SELECT *
FROM huang
WHERE pid = 1