經典SQL語句收集

2022-03-15 11:14:41 字數 3539 閱讀 3129

選擇表的前10條:

select top 10 * from 表 order by 需要排序的字段

選擇表的11-20條:

select * from

(select row_number() over (order by 需要排序的字段) as id,* from 表

)awhere id between 11 and 20

或者select top 10 * from 表

where id not in (select top 10 * from 表 order by 需要排序的字段)

order by 需要排序的字段

topn方式的分頁儲存過程:

alter procedure sp_getpageofrecords

@pagesize int = 20,                        --分頁大小

@currentpage int ,                        --第幾頁

@columns varchar(1000) = '*',              --需要得到的字段

@tablename varchar(100),                  --需要查詢的表 

@condition varchar(1000) = '',            --查詢條件, 不用加where關鍵字

@asccolumn varchar(100) = '',              --排序的欄位名 (即 order by column asc/desc)

@bitordertype bit = 0,                    --排序的型別 (0為公升序,1為降序)

@pkcolumn varchar(50) = '',                --主鍵名稱

@recordcount int output                    --傳出記錄的總數

as begin                                          --儲存過程開始

declare @strtemp varchar(300)

declare @strsql varchar(5000)              --該儲存過程最後執行的語句

declare @strordertype varchar(1000)        --排序型別語句 (order by column asc或者order by column desc)

begin

if @bitordertype = 1     --降序

begin

set @strordertype = ' order by '+@asccolumn+' desc'

set @strtemp = ' <(select min'

end

else --公升序

begin

set @strordertype = ' order by '+@asccolumn+' asc'

set @strtemp = '>(select max'

endif @currentpage = 1 --第一頁

begin

if @condition != ''

set @strsql = 'select top '+str(@pagesize)+' '+@columns+' from '+@tablename+

' where '+@condition+@strordertype

else

set @strsql = 'select top '+str(@pagesize)+' '+@columns+' from '+@tablename+@strordertype

endelse -- 其他頁

begin

if @condition !=''

set @strsql = 'select top '+str(@pagesize)+' '+@columns+' from '+@tablename+

' where '+@condition+' and '+@pkcolumn+@strtemp+'('+@pkcolumn+')'+' from (select top '+str((@currentpage-1)*@pagesize)+

' '+@pkcolumn+' from '+@tablename+@strordertype+') as tabtemp)'+@strordertype

else

set @strsql = 'select top '+str(@pagesize)+' '+@columns+' from '+@tablename+

' where '+@pkcolumn+@strtemp+'('+@pkcolumn+')'+' from (select top '+str((@currentpage-1)*@pagesize)+' '+@pkcolumn+

' from '+@tablename+@strordertype+') as tabtemp)'+@strordertype

endend

--返回總記錄數----------------------------------------

declare @sqlstring nvarchar(500);

declare @parmdefinition nvarchar(500);

set @parmdefinition = n'@totalcout varchar(30) output';

set @sqlstring = n'select @totalcout=count(*) from  ' + @tablename;

--總執行

execute sp_executesql @sqlstring, @parmdefinition,@totalcout=@recordcount output;

exec (@strsql)

end傳進乙個表表,輸出有關表中的某乙個值:

declare @sqlstring nvarchar(500);

declare @parmdefinition nvarchar(500);

declare @count varchar(30);

declare @tbname varchar(100)

set @tbname='products'

set @parmdefinition = n'@totalcout varchar(30) output';

set @sqlstring = n'select @totalcout=count(*) from  ' + @tbname;

execute sp_executesql @sqlstring, @parmdefinition,@totalcout=@count output;

declare @count int

exec sp_getpageofrecords 10,5,'*','orders','','orderdate',0,'orderid',@count output

print @count

(後續追加中。。。)

sql經典語句收集

1隨機取出10條資料 select top 10 from ma lot order bynewid 2.隨機選擇記錄 select newid 3.列出資料庫裡所有的表名 select name from sysobjects where type u u代表使用者 4.列出表裡的所有的列名 se...

SQL語句收集

use tablename 要操作的資料庫名 select logicalfilename tablename log 日誌檔名 maxminutes 10,limit on time allowed to wrap log.newsize 1 你想設定的日誌檔案的大小 m setup initia...

sql經典語句

說明 複製表 只複製結構,源表名 a 新錶名 b access可用 方法一 select into b from a where 1 1 方法二 select top 0 into b from a 注意 複製的新錶中的所有欄位都將沒有預設值,即使源表中有設預設值 說明 一條sql 語句搞定資料庫分...