sql - 如何在单个查询中根据 where 条件获取 Count(*) 和表数据
问题描述
我有一个这样的存储过程:
create procedure sp_testsp
@param1 nvarchar(800),
@count bigint output
as
begin
select * from tbl_test tt where tt.col1 = @param1;
set @count = select Count(*) from tbl_test tt where tt.col1 = @param1;
end
在上面的例子中,我将根据两个查询中的位置获取表数据和总行数。这工作正常,但在我的实际情况下,选择查询很大并且调用它两次,一次用于表,第二次用于计数,如上所示是花费时间。
只是想知道是否有任何有效的方法可以做到这一点,我不知道并且可以在单个查询中而不是两次调用同一个查询?
我尝试了一些不同的方式,这也有效,但仍然涉及调用查询两次并且执行时间相同:
Select * ,
(select count(*) from tbl_test tt where tt.col1 = @param1) as TotalCount
from tbl_test tt where tt.col1 = @param1;
任何帮助表示赞赏,谢谢。
解决方案
您可以使用
SELECT @@ROWCOUNT;
如果行数超过 20 亿,请使用ROWCOUNT_BIG
.
您可以在https://docs.microsoft.com/vi-vn/sql/t-sql/functions/rowcount-transact-sql?view=sql-server-2017找到更多信息
推荐阅读
- python - 为什么 numpy.memmap.flush() 不更新 Windows 中的文件?
- python - 根据长度从列表中选择随机元素的有效方法
- javascript - 如何在反应中使用高图?
- c# - If 语句不能正常工作不会通过 If 语句 C#
- python - 如何找到 Chrome Webdriver 的状态码?
- unity3d - 使用 unity monitization sdk 3.0.3 和 admob 插件集成统一广告后,我在 android 中的游戏崩溃并且不显示真实广告
- amazon-web-services - 我在使用 .pem 通过 SSH 连接到 AWS EC2 时遇到问题
- mysql - 使用提示窗口恢复我在 mysql/mariaDB 中的压缩和加密存档文件
- python - AttributeError:“列表”对象没有属性“相似性”
- python - 为什么 pd.to_timedelta 在提供 int 系列时会失败?