不太懂你那表结构,如果我没理解错,你试试:select top 10 userid,id,title from table where userid in(select top 10 distinct userid from table order by id desc) order by id desc
userID 是主键
直接查就行 select Top 10 from TABLE Order by ID
userID 不是主键就
oRS.open "select * from TABLE Order by ID",oConn,1,1
dim i,iPreID
i=0
iPreID=0
Do while not(oRs.eof)
if i<10 then
'如果id相同就del recordset,但不更新数据库
while iPreID=oRS("ID")
rs.delete
oRs.MoveNext
wend
iPreID=oRs("ID")
i=i+1
else
'超过10条后一律删掉
rs.delete
end if
loop
再多说一句,最后一个 order by userid 你可以改成其它你想要的排序方式
反正 select top 10 * from table a where id in (select top 1 id from table where userid = a.userid order by id) 已经实现了每个 userid 取一条记录,然后取按什么排序的前10条,你自己看着办吧
这个例子中的userid不是主键呀。大家是不是都当成主键了呀,按上面大家的方面都不行呀。还会有重复的,声明:select top 10 distinct userid,id,title from table这样写是不对的。。。上面两们朋友都回答错了,而vitor_lt() 朋友回答的是对了。可是,是不是把userid当成主键了呀?按上面vitor_lt() 朋友方法。还是能选出重复userid的记录来