在我的应用程序中,我使用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)
提前致谢
萨钦