在WITH AS 中同时使用top(@bulltionCount) 和order by 时发现提取的数据缺少
今天在做一个新闻公告读取时,发现一个奇怪的问题,现列出来,咨询大家。功能实现要求传递一个公告条数的参数@bulltionCount,读取当前最新的前bulltionCount条公开公告,发现以下两种sql语句写法读取的数据不一致。
普通写法一,读取数据正常
DECLARE @bulltionCount INT
SET @bulltionCount = 10;
SELECT top (@bulltionCount) Id,Topic,SendTime, SchoolId
FROM Bulltion
WHERE IsPublic = 1
ORDER BY tB_Id DESC;
WITH PublicBulltionListCTE AS(
SELECT top (@bulltionCount) Id,Topic,SendTime, SchoolId
FROM Bulltion
WHERE IsPublic = 1
ORDER BY Id DESC
)
SELECT *
FROM PublicBulltionListCTE;