??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精视频免费在线久久完整在线看 ,美女18一级毛片一品久道久久综合,久久69国产一区二区蜜臀http://www.aygfsteel.com/AndyZhang/category/49334.htmlwelcome to java worldzh-cnTue, 17 Apr 2012 03:59:06 GMTTue, 17 Apr 2012 03:59:06 GMT60l典SQL语句大全http://www.aygfsteel.com/AndyZhang/archive/2012/04/17/374867.htmlSkyDreamSkyDreamTue, 17 Apr 2012 03:00:00 GMThttp://www.aygfsteel.com/AndyZhang/archive/2012/04/17/374867.html阅读全文

SkyDream 2012-04-17 11:00 发表评论
]]>
sql实例http://www.aygfsteel.com/AndyZhang/archive/2012/04/17/374865.htmlSkyDreamSkyDreamTue, 17 Apr 2012 02:58:00 GMThttp://www.aygfsteel.com/AndyZhang/archive/2012/04/17/374865.html阅读全文

SkyDream 2012-04-17 10:58 发表评论
]]>
SQL语句大全http://www.aygfsteel.com/AndyZhang/archive/2012/04/17/374864.htmlSkyDreamSkyDreamTue, 17 Apr 2012 02:54:00 GMThttp://www.aygfsteel.com/AndyZhang/archive/2012/04/17/374864.html阅读全文

SkyDream 2012-04-17 10:54 发表评论
]]>
SQL中GROUP BY的用?/title><link>http://www.aygfsteel.com/AndyZhang/archive/2012/04/12/373981.html</link><dc:creator>SkyDream</dc:creator><author>SkyDream</author><pubDate>Thu, 12 Apr 2012 08:20:00 GMT</pubDate><guid>http://www.aygfsteel.com/AndyZhang/archive/2012/04/12/373981.html</guid><wfw:comment>http://www.aygfsteel.com/AndyZhang/comments/373981.html</wfw:comment><comments>http://www.aygfsteel.com/AndyZhang/archive/2012/04/12/373981.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/AndyZhang/comments/commentRss/373981.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/AndyZhang/services/trackbacks/373981.html</trackback:ping><description><![CDATA[GROUP BY 是分l查? 一?GROUP BY 是和 聚合函数配合使用,你可以想?br /><br />你用了GROUP BY ?nbsp; ITEM.ITEMNUM q个字段分组,那其他字D内容不?变成一对多又改如何昄?比如下面所C?br /><br />A  B<br />1  abc<br />1  bcd<br />1  asdfg<br /><br />select A,B from table group by A<br />你说q样查出来是什么结?<br /><br />A  B<br />    abc <br />1  bcd<br />    asdfg<br /><br />双3条如何变成一?所以需要用到聚合函?比如<br /><br />select A,count(B) 数量 from table group by A<br />q样的结果就?br />A  数量<br />1   3<br /><br /><span style="color: #3366ff">group by 有一个原?是 select 后面的所有列Q只要没有用聚合函数的列)必须出现?group by 后面</span><img src ="http://www.aygfsteel.com/AndyZhang/aggbug/373981.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/AndyZhang/" target="_blank">SkyDream</a> 2012-04-12 16:20 <a href="http://www.aygfsteel.com/AndyZhang/archive/2012/04/12/373981.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sql Server 2000企业理器无法打开QMMCQ的解决Ҏ http://www.aygfsteel.com/AndyZhang/archive/2011/08/23/357093.htmlSkyDreamSkyDreamTue, 23 Aug 2011 01:44:00 GMThttp://www.aygfsteel.com/AndyZhang/archive/2011/08/23/357093.html
MMC 不能打开文g C:\Program Files\Microsoft SQL Server\80\Tools\BINN\SQL Server Enterprise Manager.MSC?br />
分析Q?br />
参看文g是否存在或被损坏?br />
无论那种Q先其删除

然后Q在q行框中输入 mmcQ打开控制?br />
执行以下三个步骤Q?br />
1、控制台--d/删除理单元--d--扑ֈMicrosoft SQL 企业理?-d--关闭--定

2、控制台--选项--控制台模式选择"用户模式完全讉K"--下面的选择全部取消

3、控制台--另存?-存储?C:\Program Files\Microsoft SQL Server\80\Tools\BINN\SQL Server Enterprise Manager.MSC

在第三步时可能会遇到“无法保存”Q这U现象?br />
则在q行框中输入 regsvr32 C:\Windows\system32\msxml3.dll

然后再执行上面的W三步,卛_

参考:http://www.leezao.cn/article.asp?id=467

SkyDream 2011-08-23 09:44 发表评论
]]>
C#q接Sql server2000 的方?/title><link>http://www.aygfsteel.com/AndyZhang/archive/2011/08/19/356887.html</link><dc:creator>SkyDream</dc:creator><author>SkyDream</author><pubDate>Fri, 19 Aug 2011 10:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/AndyZhang/archive/2011/08/19/356887.html</guid><description><![CDATA[// 下面是本地连接sql2000Q采用下面两U连接字W串<br /><br />string source = @" server = .kingsql;database = Northwind ; integrated security=SSPI ";<br /><br />string source = @" server = .kingsql;database = Northwind ; uid = sa; pwd = sa ";<br />(2)q程q接<br />首先要保证客L与SQL服务器连接?br />具体如下说明Q?br />1Qping 服务器IP试q通与?br />q个实际上是看和q程sql server 2000服务器的物理q接是否存在。如果不行,h查网l,?看配|,当然得确保远Esql server 2000服务器的IP拼写正确?br /><br />2) 在Dos或命令行下输入telnet 服务器IP 端口Q看能否q?br />? telnet 202.114.100.100 1433<br />通常端口值是1433Q因?433是sql server 2000的对于Tcp/IP的默认侦听端口。如果有问题Q通常q一步会出问题。通常的提C是“……无法打开q接,q接 p|"?br />如果q一步有问题Q应该检查以下选项?br />1 查远E服务器是否启动了sql server 2000服务。如果没有,则启动?br />2 查服务器端有没启用Tcp/IP协议Q因E连接(通过因特|)需要靠q个协检查方法是Q在服务器上打开开始菜?>E序-> Microsoft SQL Server->服务器网l实用工P看启用的协议里是否有tcp/ip协议Q如果没有,则启用它?br />3 查服务器的tcp/ip端口是否配置?433端口。仍然在服务器网l实用工具里查看启用协议里面的tcp/ip的属性,保默认端口?433Qƈ且隐藏服务器复选框没有勾上?br />事实上,如果默认端口被修改,也是可以的,但是在客L做telnet试Ӟ写服务器端口h必须与服务器配置的端口号保持一致。如果隐藏服务器复选框被勾选,则意味着客户端无法通过枚D服务器来看到q台服务器,起到了保护的作用Q但不媄响连接,但是Tcp/ip协议的默认端口将被隐式修改ؓ2433Q在客户端连接时必须作相应的改变?br />4 如果服务器端操作pȝ打过sp2补丁Q则要对windows防火墙作一定的配置Q要对它开?433端口Q通常在测试时可以直接xwindows防火墙(其他的防火墙也关掉最好)?br />5 查服务器是否?433端口侦听。如果服务器没有在tcpq接?433端口侦听Q则是连接不上的。检查方法是在服务器的dos或命令行下面输入netstat -a -n 或者是netstat -anQ在l果列表里看是否有类似tcp 127.0.0.1 1433 listening的项。如果没有,则通常需要给sql server 2000打上臛_sp3的补丁。其实在服务器端启动查询分析器,输入 select @@version 执行后可以看到版本号Q版本号?.0.2039以下的都需要打补丁。如果以上都没问题,q时你再做telnet 服务器ip 1433 试Q将会看到屏q一 闪之后光标在左上角不停闪动。恭喜你Q你马上可以开始在企业理器或查询分析 器连接了?br /><br />一般写法可以这样子够用了,Ҏ们这些菜鸟来讲就够了Q至于复杂的以后在写Q?br /><br />SqlConnection conn = new SqlConnection("Server=.;DataBase=Northwind;Uid=sa;pwd=123;");<br />Server=.;目标服务器IP本地?(Local),<br />DataBase 数据库名U?br />Uid ,User ID , q接数据库的用户?br />pwd Password 是连接数据库的密?br />//如果没有׃要写否则报错 <img src ="http://www.aygfsteel.com/AndyZhang/aggbug/356887.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/AndyZhang/" target="_blank">SkyDream</a> 2011-08-19 18:27 <a href="http://www.aygfsteel.com/AndyZhang/archive/2011/08/19/356887.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>_֍{题收藏之逻辑NQ字W拆分) http://www.aygfsteel.com/AndyZhang/archive/2011/08/19/356881.htmlSkyDreamSkyDreamFri, 19 Aug 2011 09:18:00 GMThttp://www.aygfsteel.com/AndyZhang/archive/2011/08/19/356881.html

IF OBJECT_ID('dbo.l计?) IS NOT NULL DROP TABLE l计?
CREATE TABLE l计?(方便?INT,茶叶 INT,面包 INT,口香p?INT,牛奶 INT,ȝ?INT,可乐 INT,冰糖 INT,牙膏 INT,牙刷 INT,故事?INT,味素 INT,食盐 INT,榨菜 INT,食醋 INT)
INSERT INTO l计?
SELECT 1,0,0,0,0,1,0,0,0,1,0,0,1,0,0 UNION ALL
SELECT 1,1,0,0,0,1,0,0,0,0,1,1,0,1,0 UNION ALL
SELECT 0,1,1,1,0,1,1,1,0,1,0,0,1,1,0 UNION ALL
SELECT 1,1,0,0,1,1,0,1,1,0,0,1,1,0,0 UNION ALL
SELECT 0,1,1,0,0,1,0,1,0,0,0,0,1,1,1 UNION ALL
SELECT 1,1,0,0,1,1,0,1,1,0,0,0,0,1,0 UNION ALL
SELECT 1,1,1,0,0,1,0,1,0,0,0,1,1,0,0 UNION ALL
SELECT 0,0,1,0,0,1,0,1,0,0,0,0,1,1,1 UNION ALL
SELECT 1,1,1,0,0,1,0,1,1,0,1,1,0,1,0 UNION ALL
SELECT 1,1,1,1,0,1,1,1,0,1,1,0,1,0,1 UNION ALL
SELECT 0,0,1,1,1,1,0,1,0,1,0,1,1,1,0 UNION ALL
SELECT 1,1,1,1,1,1,0,1,0,1,0,0,1,1,1
Select * from l计?


l计表的商品名ؓn列,不只上面列出的那么多Q如何实现nl数l输出,x多少个字D就输出从一l直到nl的数组Q?
具体目标Q现有一参考?.25Q要输出满条g?到nl数l,其中一l数l统计单个商品名出现1的合计数Q即每一个商品名出现一?q一ơ?

二维数组l计ZW一列方侉K开始v与相ȝ茶叶都ؓ1Q?的关p(依次l合查询每相M个满x件的关系Q?

详细Q即从第一行找到最后一行,如发现@环组合满都?Q?q样关系?个,即sumCؓ5Q依ơ再找从W一列方侉K开始v与相隔一个位|的面包都ؓ1Q?的关p,如满L关系从第一行到最后有3个即sumD?Q依ơ类推再从第一列方侉K开始与盔R两位|的口香p组合都?Q?的关p,q样一直找到方侉K与最后一列食醋(即第n列)的关p都?Q?的位|,再从开始的W二列@环与之后的每列依ơ组合查?Q?的关p,直到循环C榨菜开始与最后一列食醋(Wn列)?Q?的关p,二维数组循环完毕?

输出Q如每以l合列满x件的sum?所有行?gt;=0.25则输?该组合商品名Uͼ例如Q茶Ӟ冰糖Q组合关pMؓQ?Q?Q的sum?总行?gt;=0.25 则需结果(茶叶,冰糖Q输出到 l果?的values 字段Q三l数l与nl数l算法与二维数组怼

l果表输出样式:Q中间以逗号分开Q?

l果?
values
{方便?口香p?牛奶,食醋}
{Q茶?冰糖Q(口香p?ȝ杯)Q榨?食醋Q}
{Q方侉K,茶叶,牛奶Q(茶叶,口香p?冰糖Q(ȝ?食盐,食醋Q?}
{Qnl数l?Q(nl数l?Q(nl数l?Q(nl数l?Q(...Q(nl数lnQ}


请问上面的数据查询如何实玎ͼ误Z码!Q?

 

IF OBJECT_ID('dbo.l计?/span>') IS NOT NULL DROP TABLE l计?
CREATE TABLE l计?(方便?INT,茶叶 INT,面包 INT,口香p?INT,牛奶 INT,ȝ?INT,可乐 INT,冰糖 INT,牙膏 INT,牙刷 INT,故事?INT,味素 INT,食盐 INT,榨菜 INT,食醋 INT)
INSERT INTO l计?
SELECT 1,0,0,0,0,1,0,0,0,1,0,0,1,0,0 UNION ALL
SELECT 1,1,0,0,0,1,0,0,0,0,1,1,0,1,0 UNION ALL
SELECT 0,1,1,1,0,1,1,1,0,1,0,0,1,1,0 UNION ALL
SELECT 1,1,0,0,1,1,0,1,1,0,0,1,1,0,0 UNION ALL
SELECT 0,1,1,0,0,1,0,1,0,0,0,0,1,1,1 UNION ALL
SELECT 1,1,0,0,1,1,0,1,1,0,0,0,0,1,0 UNION ALL
SELECT 1,1,1,0,0,1,0,1,0,0,0,1,1,0,0 UNION ALL
SELECT 0,0,1,0,0,1,0,1,0,0,0,0,1,1,1 UNION ALL
SELECT 1,1,1,0,0,1,0,1,1,0,1,1,0,1,0 UNION ALL
SELECT 1,1,1,1,0,1,1,1,0,1,1,0,1,0,1 UNION ALL
SELECT 0,0,1,1,1,1,0,1,0,1,0,1,1,1,0 UNION ALL
SELECT 1,1,1,1,1,1,0,1,0,1,0,0,1,1,1
Go
Create   PROC xb_GetArray(@l数 INT, @pL float ,@l果 VARCHAR(1000) out )
AS
SET NOCOUNT ON
IF OBJECT_ID('dbo.Tmp') IS NOT NULL DROP TABLE dbo.Tmp
CREATE TABLE Tmp(id INT,NAME VARCHAR(20))
INSERT Tmp SELECT colid,NAME  FROM syscolumns s WHERE id=OBJECT_ID('l计?/span>')
IF OBJECT_ID('tempdb.dbo.#') IS NOT NULL DROP TABLE #
CREATE TABLE #(ws INT,Result VARCHAR(1000))

DECLARE @num INT
DECLARE @f FLOAT
DECLARE @sql nVARCHAR(1000)
DECLARE @id VARCHAR(100),@w VARCHAR(100),@wh VARCHAR(100),@c VARCHAR(100)
DECLARE @Step int ,@i INT ,@j INT ,@s INT,@l INT 

SET @f=@pL
SELECT  @num=count(1) FROM tmp 

SET @i=1
SET @Step=@l数
set @l果=''
WHILE @i<=@num
BEGIN
   
SET @wh=REPLICATE('1,',@Step)
   
SET @j=@i
   
WHILE @j<=@num-(@Step-1)
   
BEGIN       
       
SELECT @l=1,@id='',@w='',@c=NULL   
       
WHILE @l<=@Step-1
       
BEGIN
           
SET @id=@id+LTRIM(@j+@l)+','
           
SET @l=@l+1
       
END
       
SELECT @id=ltrim(@i)+','+@id
       
SELECT @w=@w+'+ltrim('+NAME+')+'+''',''',@c=ISNULL(@c+',','')+Name FROM tmp WHERE CHARINDEX(','+LTRIM(id)+',',','+@id)>0 ORDER BY id        
       
SET @w=STUFF(@w,1,1,'')
       
SET @sql=N'if ((select count(*)*1.0 from l计?where '+@w+'='''+@wh+''')/'+LTRIM(@num)+'>' +LTRIM(@f) +') insert # select '+ltrim(@Step)+',''('+ @c+'Q?'''
       
EXEC(@sql)
       
SET @j=@j+1
   
END
   
SET @i=@i+1
END
SET @sql=NULL
SELECT @sql=ISNULL(@sql+'','')+result FROM (SELECT DISTINCT result FROM # ) aa
SET @l果='{'+@sql+'}'


GO


DECLARE @sql VARCHAR(1000)
exec xb_GetArray 2,0.3,@sql OUT
SELECT @sql 二维

--result
/*

一l?
---------------------------------------------------------------------------
{(冰糖Q?(ȝ杯),(茶叶Q?(方便面),(面包Q?(食盐Q?(味素Q?(牙刷Q?(榨菜Q?}

Q所影响的行Cؓ 1 行)
*/

DECLARE @sql VARCHAR(1000)
exec xb_GetArray 2,0.3,@sql OUT
SELECT @sql 二维
/*二维                                                                                                                                                                                                      
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{(冰糖,食盐Q?(冰糖,榨菜Q?(ȝ?冰糖Q?(ȝ?食盐Q?(ȝ?味素Q?(ȝ?牙刷Q?(ȝ?榨菜Q?(茶叶,冰糖Q?(茶叶,ȝ杯),(茶叶,面包Q?(茶叶,食盐Q?(茶叶,榨菜Q?(方便?冰糖Q?(方便?ȝ杯),(方便?茶叶Q?(方便?食盐Q?(面包,冰糖Q?(面包,ȝ杯),(面包,食盐Q?(面包,榨菜Q?(食盐,榨菜Q?(牙刷,食盐Q?}

Q所影响的行Cؓ 1 行)
*/



SkyDream 2011-08-19 17:18 发表评论
]]>
SQL pȝ存储q程用法整理 http://www.aygfsteel.com/AndyZhang/archive/2011/08/19/356879.htmlSkyDreamSkyDreamFri, 19 Aug 2011 09:10:00 GMThttp://www.aygfsteel.com/AndyZhang/archive/2011/08/19/356879.html阅读全文

SkyDream 2011-08-19 17:10 发表评论
]]>
囄{多媒体文g插入到表 http://www.aygfsteel.com/AndyZhang/archive/2011/08/19/356878.htmlSkyDreamSkyDreamFri, 19 Aug 2011 08:59:00 GMThttp://www.aygfsteel.com/AndyZhang/archive/2011/08/19/356878.htmlIF OBJECT_ID ('file_table', 'U') IS NOT NULL

    DROP TABLE file_table;
GO
CREATE TABLE file_table(FileName nvarchar(60), FileType nvarchar(60), Document varbinary(max))
GO

INSERT INTO file_table(FileName, FileType, Document)
  
SELECT    'myText.txt' AS 文g?  '.txt' AS 文gcd,  *  

   FROM OPENROWSET(BULK 'C:/myText.txt', SINGLE_BLOB) AS Document


INSERT INTO file_table(FileName, FileType, Document)
  
SELECT    'Img252837387.jpg' AS 文g? '.jpg' AS 文gcd, *

   FROM OPENROWSET(BULK 'C:/Img252837387.jpg', SINGLE_BLOB) AS Document


INSERT INTO file_table(FileName, FileType, Document)
  
SELECT    '1.rar' AS 文g?  '.rar' AS 文gcd, *

   FROM OPENROWSET(BULK 'C:/1.rar', SINGLE_BLOB) AS Document
GO

 



SkyDream 2011-08-19 16:59 发表评论
]]>
ROW_NUMBER、RANK、DENSE_RANK的用?1) http://www.aygfsteel.com/AndyZhang/archive/2011/08/19/356871.htmlSkyDreamSkyDreamFri, 19 Aug 2011 08:49:00 GMThttp://www.aygfsteel.com/AndyZhang/archive/2011/08/19/356871.html阅读全文

SkyDream 2011-08-19 16:49 发表评论
]]>
数据库分|?http://www.aygfsteel.com/AndyZhang/archive/2011/08/19/356870.htmlSkyDreamSkyDreamFri, 19 Aug 2011 08:47:00 GMThttp://www.aygfsteel.com/AndyZhang/archive/2011/08/19/356870.html数据库分|?/span>
在这里主要讲解一下MySQL、SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分|询的Ҏ。可能会有h说这些网上都有,但我的主要目的是把这些知识通过我实际的应用ȝ归纳一下,以方便大家查询用?/div>
下面分别给大家介绍、讲解一下三U数据库实现分页查询的方法?/div>
一?span style="font: 7pt 'Times New Roman'">       MySQL 数据库分|?/span>
MySQL数据库实现分|较简单,提供了LIMIT函数。一般只需要直接写到sql语句后面p了?/div>
LIMIT子句可以用来限制由SELECT语句q回q来的数据数量,它有一个或两个参数Q如果给Z个参敎ͼ W一个参数指定返回的W一行在所有数据中的位|,?开始(注意不是1Q,W二个参数指定最多返回行数。例如:
select * from table WHERE … LIMIT 10; #q回?0?
select * from table WHERE … LIMIT 0,10; #q回?0?/div>
select * from table WHERE … LIMIT 10,20; #q回W?0-20行数?
 
二?span style="font: 7pt 'Times New Roman'">       SQLServer数据库分|?/span>
SQLServer数据库又分ؓSQLServer2000和SQLServer2005。一般比较简单的Ҏ是通过TOP函数来实现。如下:
SELECT TOP 10 * FROM sql WHERE (
code NOT IN  (SELECT TOP 20 code  FROM TestTable  ORDER BY id))
 ORDER BY ID
q条语句Q从理论上讲Q整条语句的执行旉应该比子句的执行旉长,但事实相反。因为,子句执行后返回的?0条记录,而整条语句仅q回10条语句,所以媄响数据库响应旉最大的因素是物理I/O操作。而限制物理I/O操作此处的最有效Ҏ之一是使用TOP关键词了。TOP关键词是SQL SERVER中经q系l优化过的一个用来提取前几条或前几个癑ֈ比数据的词?/div>
以上语句?span style="color: #111111">有一个致命的~点Q就是它含有NOT IN字样Q要换成?/span>not exists来代?/span>not inQ二者的执行效率实际上是没有区别的?/span>
在以上分늮法中Q媄响我们查询速度的关键因素有两点Q?/span>TOP?/span>NOT IN?/span>TOP可以提高我们的查询速度Q?/span>NOT IN会减慢我们的查询速度Q所以要提高我们整个分页法的速度Q就要彻底改?/span>NOT INQ同其他Ҏ来替代它?/span>
我们知道Q几乎Q何字D,我们都可以通过max(字段)?/span>min(字段)来提取某个字D中的最大或最|所以如果这个字D不重复Q那么就可以利用q些不重复的字段?/span>max?/span>min作ؓ分水岭,使其成ؓ分页法中分开每页的参照物。在q里Q我们可以用操作W?/span>“>”?/span>“<”h完成q个使命。如Q?/span>

Select top 10 * from table1 where id>200

  于是有了如下分|案:

select top
大?/span> *

from table1

where id>

      (select max (id) from

      (select top ((
-1)*大?/span>) id from table1 order by id) as T

       )    

  order by id
 
q种Ҏ执行多少始终没有大的降势Q后劲仍然很뀂尤其对于数据量大的时候,该方法执行速度一点也不会降低?/span>
使用TOP要求主键必须唯一Q不能是联合主键。如果是联合主键Q则查询出的l果会ؕ序的?/span>
目前SQLServer2005提供了一个row_number()函数?span style="font-size: 10pt">ROW_NUMBER() 是生成一个顺序的行号,而他生成序的标?/span>,是后面紧跟?/span>OVER(ORDER BY ReportID)Q其?/span>ReportID可以是联合主键。下?/span>,我们看看怎么具体应用q个RowNoq行分页.
SELECT TOP 10 *  FROM
(
       SELECT top 10 ROW_NUMBER() OVER (ORDER BY ReportID) AS RowNo
       FROM TABLE
      ) AS A
      WHERE RowNo > " + pageIndex*10
pageIndex是我们需要数据的|.
 
但对?/span>SQLServer2000的话Q如果是联合主键Q我q没有解军_法,如果大家有可跟我联系。谢谢大家了?/span>
 
三?span style="font: 7pt 'Times New Roman'">       ORCALE数据库分|?/span>
ORCALE数据库实现分|询可以?/span>row_number()函数或者?/span>rownum 虚列两种Ҏ?/span>
W一U:利用分析函数row_number() Ҏ
select * from(
select t.*,row_number() over (order by t1.id) rowno from TABLE1
)
where rowno between 21 and 40;
 
W二U:直接使用rownum 虚列
select * from
(select t.*,rownum as rowno from TABLE1 )
where rowno between 10 and 20
q两U方法比较,昄W二U方法比较好。因Z?/span>order by语句Q会提高索数据的速度的,其数据量越大时Q第二种Ҏ快速检索数据越明显?/span>
最后提醒大Ӟoracle中慎用带?/span>order by的分c?/span>其是在oracle10g?/span>Q会出现会引h؜乱,即相同记录会出现在不同页中?/span>
 
l束语:
希望q篇文章不仅能够l大家的工作带来一定的帮助Q也希望能让大家能够体会到分析问题的ҎQ最重要的是Q希望这文章能够抛砖引玉,掀起大家的学习和讨论的兴趣Q以共同促进。还有其中红色的字如果谁知道解决办法请告诉我Q我会尽快补上的?/span>


SkyDream 2011-08-19 16:47 发表评论
]]>SQL2005中row_number( )、rank( )、dense_rank( )、ntile( )函数的用法(2Q?/title><link>http://www.aygfsteel.com/AndyZhang/archive/2011/08/19/356869.html</link><dc:creator>SkyDream</dc:creator><author>SkyDream</author><pubDate>Fri, 19 Aug 2011 08:45:00 GMT</pubDate><guid>http://www.aygfsteel.com/AndyZhang/archive/2011/08/19/356869.html</guid><description><![CDATA[<p>SQL server 2005新增的几个函?分别?span style="color: #0000ff">row_number( </span><span style="color: #0000ff">)</span>?span style="color: #0000ff">rank( )?/span>,<span style="color: #0000ff">DENSE_RANK( )</span>?span style="color: #0000ff">ntile( )</span>下面以实例分别简单讲解?br /><br />1.<span style="color: #0000ff">row_number( )</span><br />         先来Ҏ?先徏个表 </p> <div id="wmqeeuq" class="postText">SET NOCOUNT ON<br />CREATE TABLE Person(<br />FirstName VARCHAR(10),<br />Age INT,<br />Gender CHAR(1))<br />INSERT INTO Person VALUES ('Ted',23,'M')<br />INSERT INTO Person VALUES ('John',40,'M')<br />INSERT INTO Person VALUES ('George',6,'M')<br />INSERT INTO Person VALUES ('Mary',11,'F')<br />INSERT INTO Person VALUES ('Sam',17,'M')<br />INSERT INTO Person VALUES ('Doris',6,'F')<br />INSERT INTO Person VALUES ('Frank',38,'M')<br />INSERT INTO Person VALUES ('Larry',5,'M')<br />INSERT INTO Person VALUES ('Sue',29,'F')<br />INSERT INTO Person VALUES ('Sherry',11,'F')<br />INSERT INTO Person VALUES ('Marty',23,'F')</div> <div id="wmqeeuq" class="postText">直接用例子说明问?</div> <div id="wmqeeuq" class="postText">SELECT <span style="color: #0000ff">ROW_NUMBER() OVER</span> (ORDER BY Age) AS [Row Number by Age],<br />FirstName,<br />Age<br />FROM Person</div> <div id="wmqeeuq" class="postText"><br />出现的数据如?br />Row Number by Age                FirstName            Age<br />--------------------------                 ----------            --------<br />1                                                Larry                   5<br />2                                                Doris                   6<br />3                                                George               6<br />4                                                Mary                   11<br />5                                                Sherry                 11<br />6                                                Sam                    17<br />7                                                Ted                     23<br />8                                                Marty                   23<br />9                                                Sue                     29<br />10                                              Frank                  38<br />11                                              John                    40</div> <div id="wmqeeuq" class="postText" sizset="0" sizcache="0"><pre>可以观察?是根据年龄升序排列了Qƈ且row_number()是给Z序列号了,q个序列可重命名ؓRow Number by Age,</pre><pre>?span style="color: #ff00ff"><strong>sql server2000</strong></span>Ҏ:<br />如果在sql server2000中实现相寚w烦一些,我们可以利用IDENTITY()函数实现Q但IDENTITY()函数只能用在sql server2000临时表中Q因此需要将数据索到临时表里?br /><span style="color: #ff00ff">select identity(int,1,1) as <span style="color: #ff00ff">[Row Number by Age]</span>,FirstName,Age into #A from Person order by Age<br />select * from #A<br />drop table #a</span></pre><pre>如果不想按年龄排?可以q样?br />SELECT <span style="color: #0000ff">ROW_NUMBER() OVER</span> (ORDER BY (SELECT 1)) AS [Row Number by Record Set], FirstName, Age FROM Person</pre><pre>另外一个例?br />SELECT <span style="color: #0000ff">ROW_NUMBER() OVER</span> (PARTITION BY Gender ORDER BY Age) AS [Partition by Gender], FirstName, Age, Gender FROM Person</pre></div> <div id="wmqeeuq" class="postText" sizset="4" sizcache="0">q里是按性别划分区间了,同一性别再按q龄来排?输出l果如下<br /><pre>Partition by Gender        FirstName        Age               Gender -------------------- ---------- ----------- ------ 1                          Doris            6                 F 2                          Mary             11                F 3                          Sherry           11                F 4                          Sue              29                F 1                          Larry            5                 M 2                          George           6                 M 3                          Sam              17                M 4                          Ted              23                M 5                          Marty            23                M 6                          Frank            38                M 7                          John             40                M</pre>注意,姓名M开?序号又从1,2,3开始了<br /><pre> </pre><pre>2<span style="font-family: Arial">.</span><span style="color: #0000ff">RANK( )</span>函数<br />        先看例子<br />SELECT <span style="color: #0000ff">RANK() OVER</span> (ORDER BY Age) AS [Rank by Age], FirstName, Age FROM Person</pre><pre>输出如下:<br />Rank by Age                FirstName        Age -------------------- ---------- ----------- 1                          Larry            5 2                          Doris            6 2                          George           6 4                          Mary             11 4                          Sherry           11 6                          Sam              17 7                          Ted              23 7                          Marty            23 9                          Sue              29 10                         Frank            38 11                         John             40</pre><pre>看到了么,同年岭的?有相同的顺?序?,2,2,4了?/pre><pre>?span style="color: #ff00ff"><strong>sql server2000</strong></span>Ҏ:<br />出现了RANK()函数实在是方?在sql server2000里实现排序ƈ列的问题ȝ很多?br /><span style="color: #ff00ff">select [<span style="color: #ff00ff">Rank by Age</span>]=isnull((select count(*) from person where Age>A.Age),0)+1,FirstName,Age from Person A order by [<span style="color: #ff00ff">Rank by Age</span>]</span></pre><pre> </pre><pre>SELECT <span style="color: #0000ff">RANK() OVER</span>(PARTITION BY Gender ORDER BY Age) AS [Partition by Gender],<br />FirstName, Age, Gender FROM Person输出?/pre><pre>Partition by Gender        FirstName        Age               Gender -------------------- ---------- ----------- ------ 1                          Doris            6                 F 2                          Mary             11                F 2                          Sherry           11                F 4                          Sue              29                F 1                          Larry            5                 M 2                          George           6                 M 3                          Sam              17                M 4                          Ted              23                M 4                          Marty            23                M 6                          Frank            38                M 7                          John             40                M</pre> <p>可以看到,按性别分组?每个性别分组?l箋是用了rank( )函数<br /><br /><span style="font-family: Courier New">3<span style="font-family: Arial">.</span><span style="color: #0000ff">DENSE_RANK( )</span>函数<br />         SELECT <span style="color: #0000ff">DENSE_RANK() OVER </span>(ORDER BY Age) AS [Dense Rank by Age], <br />         FirstName, <br />         Age<br />         FROM Person<br /></span><span style="font-family: Courier New"><br />输出l果?<br />Dense Rank by Age          FirstName        Age<br />-------------------- ---------- -----------<br />1                          Larry            5<br />2                          Doris            6<br />2                          George           6<br />3                          Mary             11<br />3                          Sherry           11<br />4                          Sam              17<br />5                          Ted              23<br />5                          Marty            23<br />6                          Sue              29<br />7                          Frank            38<br />8                          John             40</span><br /><br />看到了么,和rank函数区别?序始终是连l的,<span style="font-family: Courier New">Doris 和George同年,都是排第2?但之后的mary不象rank函数那样排第4,而是排第3位了<br /><br /><br />4<span style="font-family: Arial">.</span><span style="color: #0000ff">ntile( )</span>函数<br /></span>SELECT FirstName,<br />Age,<br /><span style="color: #0000ff">NTILE(3) OVER </span>(ORDER BY Age) AS [Age Groups]<br />FROM Person</p> <p>输出l果Q?br />FirstName        Age               Age Groups<br />---------- ----------- --------------------<br />Larry                5                  1<br />Doris                6                  1<br />George            6                  1<br />Mary                11                1<br />Sherry             11                 2<br />Sam                17                 2<br />Ted                 23                 2<br />Marty              23                 2<br />Sue                29                 3<br />Frank             38                 3<br />John               40                 3<br />q个函数按照ntile(n)中的N,把记录强制分成多段,11条记录现在分?D了,lary到mary是第1D?sherry到maty是第2D?sue到john是第3D了?/p></div> <p> </p> <img src ="http://www.aygfsteel.com/AndyZhang/aggbug/356869.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/AndyZhang/" target="_blank">SkyDream</a> 2011-08-19 16:45 <a href="http://www.aygfsteel.com/AndyZhang/archive/2011/08/19/356869.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql where 1=1?0=1 的作?http://www.aygfsteel.com/AndyZhang/archive/2011/08/18/356806.htmlSkyDreamSkyDreamThu, 18 Aug 2011 10:50:00 GMThttp://www.aygfsteel.com/AndyZhang/archive/2011/08/18/356806.htmlwhere 1=1; q个条g始终为TrueQ在不定数量查询条g情况下,1=1可以很方便的规范语句?/span>

一、不用where  1=1  在多条g查询中的困扰

  举个例子Q如果您做查询页面,q且Q可查询的选项有多个,同时Q还让用戯行选择q输入查询关键词Q那么,按^时的查询语句的动态构造,代码大体如下Q?/p>

  string MySqlStr=”select * from table where”Q?/p>

  if(Age.Text.Lenght>0)
  {
    MySqlStr=MySqlStr+“Age=“+“'Age.Text'“Q?br />  }

  if(Address.Text.Lenght>0)
  {
    MySqlStr=MySqlStr+“and Address=“+“'Address.Text'“Q?br />  }

  ①U假?/p>

  如果上述的两个IF判断语句Q均为TrueQ即用户都输入了查询词,那么Q最l的MySqlStr动态构造语句变为:

  MySqlStr=”select * from table where Age='18'  and Address='云南省文山州q南县小波吗?”

  可以看得出来Q这是一条完整的正确的SQL查询语句Q能够正的被执行,q根据数据库是否存在记录Q返回数据?/p>

  ②U假?/p>

  如果上述的两个IF判断语句不成立,那么Q最l的MySqlStr动态构造语句变为:

  MySqlStr=”select * from table where“

  现在Q我们来看一下这条语句,׃where关键词后面需要用条Ӟ但是q条语句Ҏ׃存在条gQ所以,该语句就是一条错误的语句Q肯定不能被执行Q不仅报错,同时q不会查询到M数据?/p>

  上述的两U假设,代表了现实的应用Q说明,语句的构造存在问题,不以应付灵zd变的查询条g?/p>

  二、?where  1=1  的好?/p>

  假如我们上q的语句改ؓQ?/p>

  string MySqlStr=”select * from table where  1=1 ”Q?/p>

  if(Age.Text.Lenght>0)
  {
    MySqlStr=MySqlStr+“and Age=“+“'Age.Text'“Q?br />  }

  if(Address.Text.Lenght>0)
  {
    MySqlStr=MySqlStr+“and Address=“+“'Address.Text'“Q?br />  }

  现在Q也存在两种假设

  ①U假?/p>

  如果两个IF都成立,那么Q语句变为:

  MySqlStr=”select * from table where  1=1 and Age='18'  and Address='云南省文山州q南县小波吗?”Q很明显Q该语句是一条正的语句Q能够正执行,如果数据库有记录Q肯定会被查询到?/p>

  ②U假?/p>

  如果两个IF都不成立Q那么,语句变ؓQ?/p>

  MySqlStr=”select * from table where 1=1”Q现在,我们来看q条语句Q由于where 1=1 是ؓTrue的语句,因此Q该条语句语法正,能够被正执行,它的作用相当于:MySqlStr=”select * from table”Q即q回表中所有数据?/p>

  a下之意就是:如果用户在多条g查询面中,不选择M字段、不输入M关键词,那么Q必返回表中所有数据;如果用户在页面中Q选择了部分字Dƈ且输入了部分查询关键词,那么Q就按用戯|的条gq行查询?/p>

  说到q里Q不知道您是否已明白Q其实,where 1=1的应用,不是什么高U的应用Q也不是所谓的化的构造,仅仅只是Z满多条件查询页面中不确定的各种因素而采用的一U构造一条正能q行的动态SQL语句的一U方法?/p>

where 1=0; q个条g始终为falseQ结果不会返回Q何数据,只有表结构,可用于快速徏?/p>

"SELECT * FROM strName WHERE 1 = 0"; 该select语句主要用于d表的l构而不考虑表中的数据,q样节省了内存,因ؓ可以不用保存l果集? 

create table newtable as select * from oldtable where 1=0;  创徏一个新表,而新表的l构与查询的表的l构是一L.

1=1 永真Q?1<>1 永假?/p>

1<>1 的用处:
用于只取l构不取数据的场?br />例如Q?br />create table table_temp tablespace tbs_temp as
select * from table_ori where 1<>1
建成一个与table_ori l构相同的表table_tempQ但是不要table_ori 里的数据。(除了表结构,其它l?/p>

构也同理)



SkyDream 2011-08-18 18:50 发表评论
]]>
T-SQL 常用排名函数 出处Qhttp://xugang.cnblogs.comhttp://www.aygfsteel.com/AndyZhang/archive/2011/08/08/356028.htmlSkyDreamSkyDreamMon, 08 Aug 2011 08:15:00 GMThttp://www.aygfsteel.com/AndyZhang/archive/2011/08/08/356028.html阅读全文

SkyDream 2011-08-08 16:15 发表评论
]]>
վ֩ģ壺 °| | | | | | | | | ֦| ɽ| Ͽ| | ƽ| ˫| | | | | ƽ| | ½| ƽ| ˮ| | | ָɽ| ͺ| ʯ| | | | | ƽ| ֿ| | ƽ| ˫| Ϸ| | |