这里记录些许个会经常用到的sql语句。
P.S. [Your_Table] = 你的表名, [nid] = 你表中的主键唯一列.
/*按分页数量取表记录中的数据*/
/*以nid排序, 取20条之后的10条*/SELECT TOP 10 *
FROM Your_Table
WHERE (nid NOT IN
          (SELECT TOP 20 nid
         FROM Your_Table
         ORDER BY nid))
ORDER BY nid
/*取传入条件记录的前一条数据*/
/*取 nid='533' 记录的前一条, 返回记录 nid='532'*/
SELECT *
FROM Your_Table
WHERE (nid =
          (SELECT MAX(nid)
         FROM Your_Table
         WHERE nid < 533))
/*取传入条件记录的后一条数据*/
/*取 nid='533' 记录的后一条, 返回记录 nid='532'*/		 
SELECT *
FROM Your_Table
WHERE (nid =
          (SELECT MIN(nid)
         FROM Your_Table
         WHERE nid > 534))
		 
		 
分页存储过程,SQL 2000 数据库下使用的:
-- =============================================
-- DocumentName       分页存储过程 SQL 2000数据库下使用的
-- 描述               利用SQL查询语句进行分页
-- 输入
--       {
--        @SQL            :    SQL查询语句,示例:'Select * from [TableName]'
--        @Order        :    排序,示例:[ColumnName] [ASC | DESC]
--        @CurPage        :    当前页,示例:0..9
--        @PageRows        :    每页显示的行数,示例:0..9
--        @TotalRecorder:    查询记录总数(输出参数)
--          @IsXML        :    表示返回的结果,0表示以表格形式记录,1表示以XML格式返回记录;默认为0
--       }
-- =============================================
ALTER PROCEDURE [dbo].[SeparatePage]
    -- Add the parameters for the stored procedure here
    @SQL Nvarchar(2000),
    @Order Nvarchar(20),
    @CurPage int,
    @PageRows int,
    @TotalRecorder int output,
    @IsXML bit = 0
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    SET NOCOUNT ON;
    declare @ExceSQL nvarchar(4000)
    
    --设置开始行号
    declare  @start_row_num AS int
    SET @start_row_num = (@CurPage - 1) * @PageRows
   
    if @CurPage > 1 
        BEGIN
            SET @start_row_num = @start_row_num + 1;
            SET @PageRows = @PageRows - 1
        END
    else
        SET @start_row_num = @start_row_num
    
    --获取总记录数
    set @ExceSQL = 'SELECT tb.* into [tb_Temp] FROM ('+ @SQL +') tb ORDER BY'+ @order
    execute(@ExceSQL)
    SELECT @TotalRecorder = COUNT(*) from [tb_Temp]
    ALTER TABLE [tb_Temp] add [RowNumber] int
    --设置查询语句
    SET @ExceSQL = 'SELECT TOP '+ convert(varchar(10),@PageRows) +' * 
                    FROM (SELECT TOP '+ convert(varchar(10),@PageRows) +' * 
                    FROM (SELECT TOP '+ convert(varchar(10),@TotalRecorder-@start_row_num+1) +' *
                    FROM [tb_Temp] ORDER BY '+ REPLACE(@Order,'DESC','ASC') +') AS a
                    ORDER BY '+ REPLACE(@Order,'ASC','DESC') +') AS b'
    IF(@IsXML = 1)
        SET @ExceSQL = @ExceSQL + ' FOR XML AUTO,ELEMENTS'
 
    EXECUTE(@ExceSQL)
    DROP Table [tb_Temp]
END
分页存储过程,SQL 2005 数据库下使用的:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- DocumentName       分页存储过程  SQL 2005数据库下使用
-- 描述                 利用SQL查询语句进行分页
-- 输入
--       {
--        @SQL            :    SQL查询语句,示例:'Select * from [TableName]'
--        @Order        :    排序,示例:[ColumnName] [ASC | DESC]
--        @CurPage        :    当前页,示例:0..9
--        @PageRows        :    每页显示的行数,示例:0..9
--        @TotalRecorder:    查询记录总数(输出参数)
--          @IsXML        :    表示返回的结果,0表示以表格形式记录,1表示以XML格式返回记录;默认为0
--       }
-- =============================================
ALTER PROCEDURE [dbo].[SeparatePage]
    -- Add the parameters for the stored procedure here
    @SQL Nvarchar(2000),
    @Order Nvarchar(20),
    @CurPage int,
    @PageRows int,
    @TotalRecorder int output,
    @IsXML bit = 0
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    SET NOCOUNT ON;
    declare @ExceSQL nvarchar(4000)
    
    --设置开始行号
    declare  @start_row_num AS int
    SET @start_row_num = (@CurPage - 1) * @PageRows
   
    if @CurPage > 1 
        BEGIN
            SET @start_row_num = @start_row_num + 1;
            SET @PageRows = @PageRows - 1
        END
    else
        SET @start_row_num = @start_row_num
    
    --设置标签语句
    declare @RowNumber nvarchar(100)
    set @RowNumber = ', ROW_NUMBER() OVER(ORDER BY ' + @Order + ') as RowNumber from '
    set @SQL = Replace(@SQL,' from ',@RowNumber)
    --获取总记录数
    set @ExceSQL = 'WITH [TempTable] AS (' + @SQL + ') 
        select @TotalRecorder=max(RowNumber) from [TempTable]'
    execute sp_executesql @ExceSQL,N'@TotalRecorder int output',@TotalRecorder output
    --设置查询语句
    set @ExceSQL = 'WITH [TempTable] AS (' + @SQL + ') 
        select * from [TempTable] where RowNumber between ' + Convert(nvarchar,@start_row_num)
        + ' And ' + Convert(nvarchar,@start_row_num+@PageRows)
    
    IF(@IsXML = 1)SET @ExceSQL = @ExceSQL + 'FOR XML AUTO,ELEMENTS'
 
    execute(@ExceSQL)
END