Moo*_*oon 3 sql t-sql sql-server sql-server-2005 sql-server-2008
我需要允许用户查询所有或一些记录.现在我这样做:
DECLARE @Limit INT = NULL
IF @Limit IS NULL SELECT @Limit = COUNT(ID) FROM vwNotifications
SELECT TOP (@Limit) ROW_NUMBER() OVER(ORDER BY Type, CreatedBy DESC) AS Row, Title
FROM vwNotifications
Run Code Online (Sandbox Code Playgroud)
有没有办法可以在不使用COUNT查询的情况下执行此操作?
你有两个选择
如果它是0,那么最重要的是20亿,但是再次......你真的想在1次投篮中返回20亿行吗?
DECLARE @Limit INT = NULL
SELECT @Limit = COALESCE(@Limit, 200000000)
SELECT TOP (@Limit) ROW_NUMBER() OVER(ORDER BY Type, CreatedBy DESC) AS Row, Title
FROM vwNotifications
Run Code Online (Sandbox Code Playgroud)
或者做一个if else
DECLARE @Limit INT = NULL
IF @Limit IS NULL
SELECT ROW_NUMBER() OVER(ORDER BY Type, CreatedBy DESC) AS Row, Title
FROM vwNotifications
else
SELECT TOP (@Limit) ROW_NUMBER() OVER(ORDER BY Type, CreatedBy DESC) AS Row, Title
FROM vwNotifications
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3585 次 |
| 最近记录: |