選擇表的前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 語句搞定資料庫分...