select top 1*每次都返回不同的记录集

Sac*_*hin 0 sql sql-server

在我的应用程序中,我使用SELECT TOP 12*子句从数据库中选择前12条记录并将其显示给用户.在另一种情况下,我必须逐一显示相同的结果.所以我使用SELECT TOP 1*子句,其余的查询是一样的.我使用Sql row_number()函数逐个选择项目.

问题是SELECT TOP 1*没有给我返回与SELECT TOP 12*相同的行.每次执行查询时,SELECT TOP 12*的结果集也会更改.

任何人都可以解释为什么在SELECT TOP 12*和SELECT TOP 1*中结果不一样.

仅供参考:这是我的sql

select distinct top 1 *  from( 
select row_number() over (  ORDER BY Ratings desc  ) as Row, * from( 
SELECT vw.IsHide, vw.UpdateDate, vw.UserID, vw.UploadPath, vw.MediaUploadID, vw.Ratings, vw.Caption, vw.UserName, vw.BirthYear, vw.BirthDay, vw.BirthMonth, vw.Gender, vw.CityProvince, vw.Approved 
FROM VW_Media as vw ,Users as u WITH(NOLOCk) 
WHERE vw.IsHide='false' and 
GenderNVID=5 and 
vw.UserID=u.UserID and 
vw.UserID not in(205092) and 
vw.UploadTypeNVID=1106 and 
vw.IsDeleted='false' and 
vw.Approved = 1 and 
u.HideProfile=0 and 
u.StatusNVID=126 and 
vw.UserID not in(Select BlockedToUserID from BlockList WITH(NOLOCk) where UserID=205092) a) totalres where row >0
Run Code Online (Sandbox Code Playgroud)

提前致谢

萨钦

小智 12

使用SELECT TOP时,还必须使用ORDER BY子句以避免每次都出现不同的结果.