SQL Server实现显示每个类别最新更新数据的方法

本文实例讲述了SQL Server实现显示每个类别最新更新数据的方法。分享给大家供大家参考,具体如下:

在项目中经常遇到求每个类别最新显示的数据,比如显示某某某类别最新更新的5条数据。特写下这个sql记录于此:

-- =============================================
-- 作者:  <Rising_Sun>
-- 创建日期: <2012-9-28>
-- 描述: <显示每个类别下最新更新的n条数据>
-- =============================================
DECLARE @t TABLE
(
 NewsId INT,
 NewsType NVARCHAR(20),
 NewsTitle NVARCHAR(50),
 AddTime DATETIME
)
INSERT INTO @t VALUES(1,'体育新闻','火箭赢了','2011-10-11')
INSERT INTO @t VALUES(2,'体育新闻','刘翔因伤退出','2011-10-12')
INSERT INTO @t VALUES(3,'体育新闻','奥尼尔减肥成功','2011-10-13')
INSERT INTO @t VALUES(4,'八卦新闻','凤姐结婚了','2011-10-11')
INSERT INTO @t VALUES(5,'八卦新闻','刘德华当爹了','2011-10-12')
INSERT INTO @t VALUES(6,'八卦新闻','苍老师来中国宣传了','2011-10-13')
INSERT INTO @t VALUES(7,'财经新闻','股票跌破2800点','2011-10-12')
INSERT INTO @t VALUES(8,'财经新闻','人民币首次降息','2011-10-10')
--每个类别最新显示数量
DECLARE @ShowNums INT
SET @ShowNums=2
SELECT * FROM
(
 SELECT NewsId,NewsTitle,NewsType,AddTime,
     ROW_NUMBER() OVER(PARTITION BY NewsType ORDER BY AddTime DESC) AS RowIndex
FROM @t
 ) AS T
WHERE RowIndex <=@ShowNums

运行该Sql,结果显示为:

希望本文所述对大家SQL Server数据库程序设计有所帮助。

(0)

相关推荐

  • Sqlserver 2005使用XML一次更新多条记录的方法

    我想很多人都知道,在oracle里面,存储过程里面可以传入数组(如int[]),也就是说,可以传多条记录到数据,从而一起更新.减少数据库的请求次数. 但SqlServer呢?bulk Insert这个很多人都知道,我也知道,但可惜,我从来没用过,只有导数据的时候才会考虑,但导数据DTS不是更方便吗? 手头的一个项目,有几个功能,每次需要更新N(N<1000)条记录,记录不多,但如果每次只更新一条,循环insert,那每个功能需要N次请求数据库,如果有1000个并发,那数据库除了做你这个事情,其他

  • SQLServer批量更新两个关联表数据的方法

    本文实例讲述了SQLServer批量更新两个关联表数据的方法.分享给大家供大家参考,具体如下: 方式1: UPDATE a SET WtNo=b.NO from WT_Task a INNER JOIN WT_BasicInformation b ON a.WtId=b.ID; 方式2: UPDATE a SET a.WtNo=b.NO FROM WT_Task a,WT_BasicInformation b WHERE a.WtId=b.ID; 希望本文所述对大家SQL Server数据库程序

  • sql server中批量插入与更新两种解决方案分享(asp.net)

    若只是需要大批量插入数据使用bcp是最好的,若同时需要插入.删除.更新建议使用SqlDataAdapter我测试过有很高的效率,一般情况下这两种就满足需求了 bcp方式 复制代码 代码如下: /// <summary> /// 大批量插入数据(2000每批次) /// 已采用整体事物控制 /// </summary> /// <param name="connString">数据库链接字符串</param> /// <param n

  • SQL Server 利用触发器对多表视图进行更新的实现方法

    其步骤就是:利用update操作触发器产生的2个虚拟表[inserted]用来存储修改的数据信息和[deleted]表,然后将对应的数据更新到对应数据表中的字段信息中: 1.首先创建3个表: a.信息表: USE [SQL-LI] BEGIN TRANSACTION CHUANGJIAN_XINXIN_TAB --创建命名为[XINXIN_TAB]的数据表,同时不允许字段为空 CREATE TABLE XINXIN_TAB ( 姓名 NVARCHAR(10) NOT NULL, 性别 NVARC

  • SQL Server自动更新统计信息的基本算法

    自动更新统计信息的基本算法是: · 如果表格是在 tempdb 数据库表的基数是小于 6,自动更新到表的每个六个修改. · 如果表的基数是大于 6,但小于或等于 500,更新状态每 500 的修改. · 如果基数大于 500,表为更新统计信息时(500 + 20%的表)发生了更改. · 表变量为基数的更改不会触发自动更新统计信息. 注意:此严格意义上讲,SQL Server 计算基数为表中的行数. 注意:除了基数,该谓语的选择性也会影响 AutoStats 生成.这意味着该统计信息可能无法更新的

  • SQLSERVER 本地查询更新操作远程数据库的代码

    复制代码 代码如下: --PK select * from sys.key_constraints where object_id = OBJECT_ID('TB') --FK select * from sys.foreign_keys where parent_object_id =OBJECT_ID('TB') --创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' exec sp_addlin

  • 数据库更新Sqlserver脚本总结

    表复制: 1. INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1 要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量. 示例如下: 复制代码 代码如下: --创建测试表 create TABLE Users1 ( UserID int identity (1,1) prima

  • SQLServer用存储过程实现插入更新数据示例

    实现 1)有相同的数据,直接返回(返回值:0): 2)有主键相同,但是数据不同的数据,进行更新处理(返回值:2): 3)没有数据,进行插入数据处理(返回值:1). [创建存储过程] Create proc Insert_Update @Id varchar(20), @Name varchar(20), @Telephone varchar(20), @Address varchar(20), @Job varchar(20), @returnValue int output as declar

  • sql server中批量插入与更新两种解决方案分享(存储过程)

    1.游标方式 复制代码 代码如下: DECLARE @Data NVARCHAR(max) SET @Data='1,tanw,2,keenboy' --Id,Name DECLARE @dataItem NVARCHAR(100) DECLARE data_cursor CURSOR FOR (SELECT * FROM split(@Data,';')) OPEN data_cursor FETCH NEXT FROM data_cursor INTO @dataItem WHILE @@F

  • SQL Server实现显示每个类别最新更新数据的方法

    本文实例讲述了SQL Server实现显示每个类别最新更新数据的方法.分享给大家供大家参考,具体如下: 在项目中经常遇到求每个类别最新显示的数据,比如显示某某某类别最新更新的5条数据.特写下这个sql记录于此: -- ============================================= -- 作者: <Rising_Sun> -- 创建日期: <2012-9-28> -- 描述: <显示每个类别下最新更新的n条数据> -- ============

  • SQL Server如何通过创建临时表遍历更新数据详解

    前言: 前段时间新项目上线为了赶进度很多模块的功能都没有经过详细的测试导致了生成环境中的数据和实际数据对不上,因此需要自己手写一个数据库脚本来更新下之前的数据.(线上数据库用是SQL Server2012)关于数据统计汇总的问题肯定会用到遍历统计汇总,那么问题来了数据库中如何遍历呢?好像并没有for和foreach这种类型的功能呀,不过关于数据库遍历最常见的方法当然是大家经常会想到的游标啦,但是这次我并没有使用游标,而是通过创建临时表的方式来更新遍历数据的. 为什么不使用游标,而使用创建临时表?

  • SQL Server删除表及删除表中数据的方法

    本文介绍SQL Server中如何删除表,如何删除表中的数据.在删除表数据时有delete和truncate两种方法,delete和truncate有什么区别呢? SQL Server,我们现在基本上使用的最古老的版本应该是SQL Server 2000吧,应该没有更早的版本了吧?!从SQL Server 2000开始,到SQL Server 2005,2008,2012等,T-SQL的处理能力越来越强.今天我们就来说说如何使用T-SQL脚本来删除表,以及删除表中的数据. 删除表和删除表数据这是

  • SQL server服务显示远程过程调用失败的解决方法

    刚刚打开SQL Server 2008,想要新建一个数据库,却发现出现了一个问题,这个问题由于之前没有遇到过,所以下面整理解决SQL server服务远程调用失败的几个方法,供大家参考,具体内容如下 先看看出现的问题: 出现上面这个错误的原因可能是由于咱们在装VS2012或者其他版本的时候,这个VS会自动装"Microsoft SQL Server 2013(2012) ExpressLocalDB"服务,所以导致SQL server2008,中SQL server服务显示远程过程调用

  • 解析SQL Server CDC配合Kafka Connect监听数据变化的问题

    写在前面 好久没更新Blog了,从CRUD Boy转型大数据开发,拉宽了不少的知识面,从今年年初开始筹备.组建.招兵买马,到现在稳定开搞中,期间踏过无数的火坑,也许除了这篇还很写上三四篇. 进入主题,通常企业为了实现数据统计.数据分析.数据挖掘.解决信息孤岛等全局数据的系统化运作管理 ,为BI.经营分析.决策支持系统等深度开发应用奠定基础,挖掘数据价值 ,企业会开始着手建立数据仓库,数据中台.而这些数据来源则来自于企业的各个业务系统的数据或爬取外部的数据,从业务系统数据到数据仓库的过程就是一个E

  • 关于SQL Server 2008忘记sa密码修改sa密码的方法图解

    1. 先用Window身份验证方式登陆进去,选择数据库实例,右键选择属性--安全性:把服务器身份验证选项从"Window身份验证模式"改为"SQLServer和Window身份验证模式".点击确定,关闭当前对象资源管理器.   2. 重 新用Window验证方式登陆,在左边的树结构中选择"数据库"下面的"安全性"选项--登录名--sa,右键属性--在"SQLServer身份验证"中输入要设置的sa密码. 3

  • sql server通过脚本进行数据库压缩全备份的方法【推荐】

    问题: 生产环境的数据库可能比较大,如果直接进行全备而不压缩的话,备份集就会占用了大量磁盘空间.给备份文件的存放管理带来不便. 解决方案: 通过with compression显式启用备份压缩,指定对此备份执行备份压缩,覆盖服务器级默认设置.适用于 SQL Server 2008和更高版本. 因为相同数据的压缩的备份比未压缩备份小,所以压缩备份所需的设备 I/O 通常较少,因此通常可大大提高备份速度. 脚本: /* 说明:手动修改[DB名称].要备份到的[路径和文件名],再执行脚本 脚本来源:h

  • django框架使用orm实现批量更新数据的方法

    本文实例讲述了django框架使用orm实现批量更新数据的方法.分享给大家供大家参考,具体如下: 好久没有用django来改版博客了,突然感觉到生疏了.没办法,业余玩python,django,工作用java的原因,也只能如此.在用django写一个类别更新的时候同时更新子类的parentcode, 如果是自己写原生的sql的话,很好解决.但既然用 django 就用 django 的 orm 去实现: 最简单的方法: MyModel.objects.filter(parentcode=ori_

  • angular+ionic 的app上拉加载更新数据实现方法

    第一步,首先需要在<ion-content>标签里面加入标签<ion-infinite-scroll ng-if="hasmore" on-infinite="loadMore()" distance="5%"></ion-infinite-scroll> 里面的属性解释, ng-if  值 布尔型,如果为true,则可以触发上拉事件 on-infinite 上拉时触发的事件 distance 列表底部滚动到可

  • Thinkphp批量更新数据的方法汇总

    以下小编给大家列出了三种实现thinkphp批量更新数据的方法,写的不好还请见谅,有意见欢迎提出,共同学习进步! 方法一: //批量修改 data二维数组 field关键字段 参考ci 批量修改函数 传参方式 function batch_update($table_name='',$data=array(),$field=''){ if(!$table_name||!$data||!$field){ return false; }else{ $sql='UPDATE '.$table_name

随机推荐