前腐后继 发表于 2006-12-31 12:38:00

SQLServer技巧集

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