易截截图软件、单文件、免安装、纯绿色、仅160KB

Sql 里面 ROW_NUMBER 应用场景

ROW_NUMBER 返回按一定规则排序的当前记录对应的行号
比如我们有这样一个应用场景:
现在有个比赛,需要从网上参赛者从从网络上报名,然后去最早报名的5个人参加比赛,为此我们实现如下:
1.为此我们要建立一张表来保存报名参赛者的姓名及起报名时间
CREATE 
TABLE [dbo].[UserEnroll](
[UserName] [nvarchar]
(50) NULL, --参赛者的姓名
[EnrollTime] [datetime]
NULL --报名时间

ON  [PRIMARY]
2.我们Sql 向表中插入数据,模拟参赛者报名 
insert
  into [dbo].[UserEnroll] values('CC', GETDATE())
insert  into [dbo].[UserEnroll] values('CC1', DateAdd(DAY,-1,GETDATE()))
insert 
into [dbo].[UserEnroll] values('CC2', DateAdd(DAY,-2,GETDATE()))
insert 
into [dbo].[UserEnroll] values('CC3', DateAdd(DAY,-3,GETDATE()))
insert 
into [dbo].[UserEnroll] values('CC4', DateAdd(DAY,-4,GETDATE ()))
insert 
 into [dbo].[UserEnroll] values('CC5', DateAdd(DAY,-5,GETDATE()))
insert 
 into [dbo].[UserEnroll] values('CC6', DateAdd(DAY,-6,GETDATE()))
insert
 into [dbo].[UserEnroll] values('CC7', DateAdd(DAY,-7,GETDATE()))
 
3.删除非最早5报名的人
  a.  给表加上行号
SELECT
*, ROW_NUMBER() OVER(ORDER BY EnrollTime) AS RowNum
from [dbo].[UserEnroll]
   结果如下:
   UserName EnrollTime RowNum
CC7 2010-05-11 17:38:42.403 1
CC6 2010-05-12 17:38:42.403 2
CC5 2010-05-13 17:38:42.403 3
CC4 2010-05-14 17:38:42.403 4
CC3 2010-05-15 17:38:42.403 5
CC2 2010-05-16 17:38:42.403 6
CC1 2010-05-17 17:38:42.403 7
CC 2010-05-18 17:38:42.403 8
 b. 那么我们删除RowNum 大于5的记录
 
WITH UserEnrollWithRowNumber AS (
SELECT *, ROW_NUMBER() OVER(ORDER BY EnrollTime) AS
RowNum from [dbo].[UserEnroll])
DELETE from  UserEnrollWithRowNumber
WHERE RowNum >  5
结果为 effect 3 rows
 c. 再用a步中的语句查询报名表结果为
UserName EnrollTime RowNum
CC7 2010-0


相关文档:

数据库组件 Hxj.Data (十) (输出组件执行的sql)

前面有TX留言问分页的sql是怎么样的,看完这篇你也就知道了。 组件可以输出执行的sql,方便查看sql生成的语句是否有问题。 通过注册事件来输出sql DbSession.Default.RegisterSqlLogger(database_OnLog);
 
private string sql;
void database_OnLog(string logMsg)
{
//保存执行的DbCommand (sql语 ......

怎么从oracle通过odbc 和sql得到mysql

 oracle的odbc网关(gateway)几乎提供一个无线的数据整合平台,在oracle和其它RDBMS之间,我在这不想说它的,操作,限制以及相关性,它解决了一个小问题,把它建立起来你能,例如,创建一个 database link 在oracle 和oracle之间,毕竟,这样不是很好么,例如你能运行下面的sql语句,
select o.col1, m.col1 from or ......

sql替换语句

--分解字符串包含的信息值后然后合并到另外一表的信息
--(爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)  2007-12-23  广东深圳)
/*问题描述
tba
ID  classid   name
1     1,2,3   西服
2     2,3     中山装
3&n ......

如何应对Winforms中SQL的注入式攻击

Sql语句作为国际标准的数据库查询语句,北京搬家公司 北京疏通公司在各种编程环境中得到了广泛的应用。作为一个成熟、稳定的系统,用户登陆和密码验证是必不可少的。在平时的编程工作中许多程序员在用sql语句进行用户密码验证时是通过一个类似这样的语句来实现的:
 strSel = " Select * from 用户表 where 姓名= '" ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号