SQL SERVERÁÙʱ±íµÄʹÓÃ
drop table #Tmp --ɾ³ýÁÙʱ±í#Tmp
create table #Tmp --´´½¨ÁÙʱ±í#Tmp
(
ID int IDENTITY (1,1) not null, --´´½¨ÁÐID,²¢ÇÒÿ´ÎÐÂÔöÒ»Ìõ¼Ç¼¾Í»á¼Ó1
WokNo varchar(50),
primary key (ID) --¶¨ÒåIDΪÁÙʱ±í#TmpµÄÖ÷¼ü
);
Select * from #Tmp --²éѯÁÙʱ±íµÄÊý¾Ý
truncate table #Tmp --Çå¿ÕÁÙʱ±íµÄËùÓÐÊý¾ÝºÍÔ¼Êø
Ïà¹ØÀý×Ó£º
Declare @Wokno Varchar(500) --ÓÃÀ´¼Ç¼ְ¹¤ºÅ
Declare @Str NVarchar(4000) --ÓÃÀ´´æ·Å²éѯÓï¾ä
Declare @Count int --Çó³ö×ܼǼÊý
Declare @i int
Set @i = 0
Select @Count = Count(Distinct(Wokno)) from #Tmp
While @i < @Count
Begin
Set @Str = 'Select top 1 @Wokno = WokNo from #Tmp Where id not in (Select top ' + Str(@i) + 'id from #Tmp)'
Exec Sp_ExecuteSql @Str,N'@WokNo Varchar(500) OutPut',@WokNo Output
Select @WokNo,@i --Ò»ÐÐÒ»ÐаÑÖ°¹¤ºÅÏÔʾ³öÀ´
Set @i = @i + 1
End
ÁÙʱ±í
¿ÉÒÔ´´½¨±¾µØºÍÈ«¾ÖÁÙʱ±í¡£±¾µØÁÙʱ±í½öÔÚµ±Ç°»á»°Öпɼû£»È«¾ÖÁÙʱ±íÔÚËùÓлỰÖж¼¿É¼û¡£
±¾µØÁÙʱ±íµÄÃû³ÆÇ°ÃæÓÐÒ»¸ö±àºÅ·û (#table_name)£¬¶øÈ«¾ÖÁÙʱ±íµÄÃû³ÆÇ°ÃæÓÐÁ½¸ö±àºÅ·û (##table_name)¡£
SQL Óï¾äʹÓà CREATE TABLE Óï¾äÖÐΪ table_name Ö¸¶¨µÄÃû³ÆÒýÓÃÁÙʱ±í£º
CREATE TABLE #MyTempTable (cola INT PRIMARY KEY)
INSERT INTO #MyTempTable VALUES (1)
Èç¹û±¾µØÁÙʱ±íÓÉ´æ´¢¹ý³Ì´´½¨»òÓɶà¸öÓû§Í¬Ê±Ö´ÐеÄÓ¦ÓóÌÐò´´½¨£¬Ôò SQL Server ±ØÐëÄܹ»Çø·ÖÓɲ»Í¬Óû§´´½¨µÄ±í¡£Îª´Ë£¬SQL Server ÔÚÄÚ²¿ÎªÃ¿¸ö±¾µØÁÙʱ±íµÄ±íÃû×·¼ÓÒ»¸öÊý×Öºó׺¡£´æ´¢ÔÚ tempdb Êý¾Ý¿âµÄ sysobjects ±íÖеÄÁÙʱ±í£¬ÆäÈ«ÃûÓÉ CREATE TABLE Óï¾äÖÐÖ¸¶¨µÄ±íÃûºÍϵͳÉú³ÉµÄÊý×Öºó׺×é³É¡£ÎªÁËÔÊÐí×·¼Óºó׺£¬Îª±¾µØÁÙʱ±íÖ¸¶¨µÄ±íÃû table_name ²»Äܳ
Ïà¹ØÎĵµ£º
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--ÿҳÏÔʾ¼Ç¼ÌõÊý
@currentpage int output,--µÚ¼¸Ò³
@orderid nvarchar(50),--Ö÷¼üÅÅÐò
@sort int,--ÅÅÐò·½Ê½£¬1±íʾÉýÐò£¬0±íʾ½µÐòÅÅÁÐ
......
ÔÚÏÖ´úµÄ¶àÓû§¶àÈÎÎñϵͳÖУ¬±ØÈ»»á³öÏÖ¶à¸öÓû§Í¬Ê±·ÃÎʹ²ÏíµÄij¸ö¶ÔÏó£¬Õâ¸ö¶ÔÏó¿ÉÄÜÊÇ±í£¬ÐУ¬»òÕßÄÚ´æ½á¹¹£¬ÎªÁ˽â¾ö¶à¸öÓû§²¢·¢ÐÔ·ÃÎÊ´øÀ´µÄÊý¾ÝµÄ°²È«ÐÔ£¬ÍêÕûÐÔ¼°Ò»ÖÂÐÔÎÊÌ⣬±ØÐëÒªÓÐÒ»ÖÖ»úÖÆ£¬À´Ê¹¶ÔÕâЩ¹²Ïí×ÊÔ´µÄ²¢·¢ÐÔ·ÃÎÊ´®Ðл¯£¬oracleÖеÄËø¾Í¿ÉÒÔÌṩÕâÑùµÄ¹¦ÄÜ£¬µ±ÊÂÎñÔÚ¶Ôij¸ö¶ÔÏó½øÐвÙ×÷ǰ£¬ÏÈÏòϵͳ ......
ƽʱºÜÉÙÓÃSQL Server 2008£¬Å¼¶ûÓÃÒ»´Î£¬»¹ÕæÊÇÓöµ½ÁËһЩÎÊÌ⣬¼¸¾ÖÜÕÛ£¬´Ó¹ÙÍøÉϲÅÕÒµ½½â¾ö°ì·¨£º
ÎÊÌâÃèÊö£ºµÇ½ºó£¬µã»÷Êý¾Ý¿â£¬³öÏÖ·þÎñÆ÷Ö÷Ìå "xxxcom" ÎÞ·¨ÔÚµ±Ç°°²È«ÉÏÏÂÎÄÏ·ÃÎÊÊý¾Ý¿â "db_xxx_com"¡£
ÎÊÌâÔÒò£ºSQL Server 2008 bug
ÎÊÌâ½â¾ö°ì·¨£¨·ÇÔ´´£¬²Î¿¼¹ÙÍø£©£º
1¡¢ÓÃSQL Server Management Studi ......
²éѯǰ¼¸Ìõ¼Ç¼SQLÔÚ²»Í¬Êý¾Ý¿âÖеÄÓ÷¨
1. ORACLE
SELECT * from TABLE1 WHERE ROWNUM<=N
2. INFORMIX
SELECT FIRST N * from TABLE1
3. DB2
SELECT * ROW_NUMBER() OVER(ORDER BY COL1 DESC) AS ROWNUM WHERE ROWNUM<=N
»òÕß
SELECT COLUMN from TABLE FETCH FIRST N ROWS ONLY
4. SQL SERVER
SE ......