求一条sql语句?

[复制链接]
查看11 | 回复5 | 2010-9-7 10:17:02 | 显示全部楼层 |阅读模式
表名:product
字段名:pid productname userid(用户ID) updatetime
由于同一个用户发了几个产品,我想显示所有产品,并以updatetime为倒序排序,且一个用户只显示一个产品?
求这样的一个sql语句。
很抱歉,我没有表达清楚
这样说吧:一个客户在我的网站上发布了100个产品,产品的名称只相差一个数字或字母。别人的搜索一个关键词的时候,总不能前10页都是这个客户的产品吧?这样对其他客户太不公平了。
数据库是sql server2005
再补充一下:我的数据库中的updatetime的时间有相同的(因为客户后台有一个批量更新产品时间的功能,将时间更新成一样的了),并且Userid也是一样的。所以3楼的方法,查询出来的结果还是有重复的。
6楼提示这样的错误
选择列表中的列 'product.PId' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
好像使用group by 的时候,只允许查询userid和max(updatetime)这两个

回复

使用道具 举报

千问 | 2010-9-7 10:17:02 | 显示全部楼层
select a.pid,a.productname,a.userid,a.updatetime from product a,(select userid,max(updatetime) updatetime from product group by userid) bwhere a.userid=b.useridand a.updatetime=b.updatetimeorder by a.updatetime desc
回复

使用道具 举报

千问 | 2010-9-7 10:17:02 | 显示全部楼层
select distinct Productname , userid, updatetime from product group by Productname ,userid,updatetime order by updatetime desc
回复

使用道具 举报

千问 | 2010-9-7 10:17:02 | 显示全部楼层
select * from product a inner join (select userid,max(pid) pid from product group by userid) b on b.userid=a.userid and b.pid=a.pid
回复

使用道具 举报

千问 | 2010-9-7 10:17:02 | 显示全部楼层
select distinct(userid),productname,updatetime from product order by updatetime desc
回复

使用道具 举报

千问 | 2010-9-7 10:17:02 | 显示全部楼层
一个用户只显示一个产品 , 同一个用户发了几个产品 这怎么可能显示所有产品
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行