SQLServer的几个技巧

发表于:2007-07-02来源:作者:点击数: 标签:
1.把某个字段重新生气序列(从1到n):DECLARE @i intSet @i = 0Update Table1 Set @i = @i + 1,Field1 = @i2.按成绩排名次Update 成绩表Set a.名次 = (Select Count(*) + 1From 成绩表 bWhere a.总成绩 b.总成绩)From 成绩表 a3.查询外部 数据库 Select a.*From
1.把某个字段重新生气序列(从1到n):DECLARE @i intSet @i = 0Update Table1 Set @i = @i + 1,Field1 = @i2.按成绩排名次Update 成绩表Set a.名次 = (Select Count(*) + 1From 成绩表 bWhere a.总成绩 < b.总成绩)From 成绩表 a3.查询外部数据库Select a.*From OpenRowSet(@#Microsoft.Jet.OLEDB.4.0@#,@#c:\test.mdb@#;@#admin@#;@#@#,Table1) a4.查询Excel文件Select * From OpenDataSource(@#Microsoft.Jet.OLEDB.4.0@#,@#Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 8.0@#)...Sheet1$5.在查询中指定排序规则Select * From Table1 Order By Field1 COLLATE Chinese_PRC_BIN为什么要指定排序规则呢?参见:http://www.delphibbs.com/delphibbs/dispq.asp?lid=1633985例,检查数据库中的Pub_Users表中是否存在指定的用户:Select Count(*) From Pub_Users Where [UserName]=@#admin@# And [PassWord]=@#aaa@# COLLATE Chinese_PRC_BIN默认比较是不区分大小写的,如果不加COLLATE Chinese_PRC_BIN,那么密码aaa与AAA是等效的,这当然与实际不符.注意的是,每个条件都要指定排序规则,上例中用户名就不区分大小写.6.Order By的一个小技巧Order By可以指定列序而不用指定列名,在下面的例子里说明它的用处(注意,第三列未指定别名)Select a.ID,a.Name,(Select Count(*) From TableB b Where a.ID=b.PID) From TableA a Order By 3

原文转自:http://www.ltesting.net