ehxz 发表于 2007-1-9 19:20:01

SQLServer技巧集

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