首页 程序笔记 SqlServer临时表和游标循环遍历数据表方法实例

SqlServer临时表和游标循环遍历数据表方法实例

最近有个需求,有包含用户Id的表Users,包含通话记录的表MobileCalls,现在要查询表Users中某些用户联系过的通话次数最多的5个人的手机号结果集。

所以考虑了一下要使用临时表和游标。

用游标遍历表Users,根据表Users的用户Id去MobileCalls中groupby出手机号和通话次数取top5插入到临时表最后再查询临时表得到最终结果集。

实现SQL语句如下:

if object_id('tempdb..#Temp0809') is not null Begin
    drop table #Temp0809--如果存在该临时表则删掉
End
CREATE TABLE #Temp0809
(
    Mobile nvarchar(50)--创建临时表
)
--定义变量,用于存储当前被遍历到的值
declare @a bigint;
--递归,首先需要递归的空间,定义一个游标指向这个空间
declare mycursor cursor for select UserId from A where ... order by id asc
--打开游标
open mycursor
--开始遍历,将下一行的数据存入两个变量中
fetch next from mycursor into @a
while (@@fetch_status=0)--如果下一行还有数据
begin--开始遍历
insert into #Temp0809(Mobile)  SELECT TOP 5 Mobile
FROM MobileCalls WITH(NOLOCK) 
WHERE UserId = @a 
GROUP BY Mobile ORDER BY SUM(Duration) DESC
fetch next from mycursor into @a--再下一行
end--遍历结构结束
close mycursor--关闭游标
deallocate mycursor--删除游标
--遍历完成
select * from #Temp0809--查询结果集
drop table #Temp0809--删除临时表

每个语句的意思都写在注释里了,可以参考一下。如果有更好的办法,请留言谢谢。

3

站心网

最近有个需求,有包含用户Id的表Users,包含通话记录的表MobileCalls,现在要查询表Users中某些用户联系过..

为您推荐

微软 SQL Server 2025 全新特性解析 | AI 加持、向量搜索、T‑SQL 革新

AI 原生嵌入:Copilot & 向量功能Copilot 集成 SSMS 21:在 SQL Server Management Studio 中添加 AI 助手,支持自然语言生成和优化 T‑SQL 查询。向量数据类型与索引:新增原生向量字段(支持单精度浮点),并提供..

SQL Server 创建表报错:'OPTIMIZE_FOR_SEQUENTIAL_KEY' is not a recognized CREATE TABLE option.

这个错误 'OPTIMIZE_FOR_SEQUENTIAL_KEY' is not a recognized CREATE TABLE option. 表示你的目标 SQL Server 版本过旧,不支持这个选项。OPTIMIZE_FOR_SEQUENTIAL_KEY 是 SQL Server 2019(及 Azure SQL) 引入的..

Login failed for user '<token-identified principal>'. (Microsoft SQL Server, Error: 18456) 报错解决方法

登录SQL Server数据库时报错:TITLE: Connect to Server------------------------------Cannot connect to <Server address>.------------------------------ADDITIONAL INFORMATION:Login failed for user '<token-..

SQL Server 中存储 GUID:选择 uniqueidentifier 还是 nvarchar?最佳实践解析

在 SQL Server 中存储 GUID 时,选择 uniqueidentifier 还是 nvarchar?本文深入分析两者的差异,探讨性能、存储和索引的影响,提供最佳实践建议,帮助你优化数据库设计。1. uniqueidentifier 与 nvarchar 的基本区..

Web前端入门第 60 问:JavaScript 各种数组定义与数组取值方法

数组可以算是程序里面最常用的数据结构了,但凡网页上任何一个列表数据,基本都是以数组的形式存在,像表格、banner图、菜单列表、商品列表,分类列表等等,在前端领域都是以数组处理。数组的定义JS 的数组花样很多..

Web前端入门第 53 问:JavaScript 的各种调试方法

任何一门编程语言,在学习之前都应该先弄清楚它的调试方法,毕竟没有不挖坑的人类!程序一旦出现问题,第一时间就是找到问题出在哪儿,其次才是拿出解决办法。如果都找不到问题原因,那又何从谈起解决办法呢?如何排..

大数据领域面临的挑战与未来的演进趋势

序有群友提了一个关于大数据行业当前发展状况的问题。暂时先用GPT帮我们对此问题,搜罗和总结一二。其一,此问题较为宏大,需要结合个人实践、对行业的综合认知做深度思考,较为耗时。短时间内,懒于再一一总结和思..

如果单表数据量大,只能考虑分库分表吗?

程序员最怕啥?不是需求改八遍,也不是半夜报警电话,而是数据库突然卡成PPT!尤其是当单表数据冲到几千万行,查询慢得像老牛拉车,这时候团队第一反应往往是:“赶紧分库分表!”但兄弟,分库分表可不是什么温柔小..

img标签的onerror事件 以及 无限循环报错问题

有时,img标签中的src图片加载失败,原来的图片位置会出现一个碎片图标,这样让人很不爽,如何变得美观些呢?可以借用img标签的onerror事件,img标签支持onerror事件,在装载文档或图像的过程中如果发生了错误,就会..

软件产品开发中常见的10个问题及处理方法

常见的10个问题#产品开发中常见的10个问题思维导图需求相关#1. 需求不明确#在日常工作中,需求来源于用户、老板、客户、竞品分析、业务部门、产品经理等,这些人或部门会提出需求,因为他们不是产品经理,提出的需求..

一个提升运营/营销转化率的万能方法!

之前,笔者有分享过说我最喜欢的增长是可复制可持续的增长,它一般都会有三个关键过程:首先是小范围测试,低成本试错,也就是最小可行性验证,让ROI最大化。然后是把测试的最优结果整理为可执行的标准化化流程。前..

实时数据的处理一致性如何保证?

实时数据一致性的定义以及面临的挑战数据一致性通常指的是数据在整个系统或多个系统中保持准确、可靠和同步的状态。在实时数据处理中,一致性包括但不限于数据的准确性、完整性、时效性和顺序性。下图是典型的实时/..

关于大数据的一些真知灼见

大数据很强大,但还是有很多人仍然不知道它到底是什么。让我们来学习大数据的真实表现,以及如何更好地促进企业转型。或许我们经常听到有人讲大数据,但仍然有很多人不知道它到底是什么。因为我确信它很强大,所以我..

JavaScript 中的遍历详解

编程这么多年,要是每次写遍历代码时都用 for 循环,真心感觉对不起 JavaScript 语言~对象遍历为了便于对象遍历的测试,我在下面定义了一个测试对象obj。测试对象// 为 Object 设置三个自定义属性(可枚举)Object.p..

学习最重要是方法,管理最重要是高度

技术学习要兼顾深度和广度夯实技术基础这么多年来,我面试了很多人。我越发感到「技术基础」非常重要。很多技术的本质是一样的。技术基础足够好的话,学东西可以非常快。往下到操作系统层面,甚至计算机硬件层面,你..

SqlServer表结构查询

Mysql数据库查询表结构很方便,用客户端(SQLyog)可以直接复制出需要的表结构,据说可以用简单的命令查询表结构 desc 表结构Sqlserver导出表结构就很坑爹了,首先呢客户端不支持,表设计页面虽说可以复制表结构但是..

.net环境下跨进程、高频率读写数据

一、需求背景1、最近项目要求高频次地读写数据,数据量也不是很大,多表总共加起来在百万条上下。单表最大的也在25万左右,历史数据表因为不涉及所以不用考虑,难点在于这个规模的热点数据,变化非常频繁。数据来源..

工作中人们常提到的数据预处理,说的到底是什么?

数据预处理一方面是为了提高数据的质量,另一方面也是为了适应所做数据分析的软件或者方法。在做数据分析时,我想许多数据分析师会像《R语言实战第二版》的作者卡巴科弗那样发出感叹:“数据分析师在数据预处理上花..

Java中String类常见的方法

以下介绍字符串常见的几个方法。介绍String类在 Java 中,String类是一个代表字符串的类,具有以下特性:不可变性:String对象一旦被创建就是不可变的,即它们的值在创建后不能被更改。任何对String对象的修改操作实..

2025年常见SQLServer数据库面试题

分享一些 2025年常见的 SQL Server 数据库面试题,涵盖基础知识、性能优化、高级查询、管理与运维等多个方面,适用于开发、DBA 及数据分析相关岗位的面试。1. SQL Server 的基本架构是什么?答案:SQL Server 的架构..

发表回复

返回顶部

微信分享

微信分享二维码

扫描二维码分享到微信或朋友圈

链接已复制