mysql怎么随机取50条数据

 我来答
日落的糖Kf
2018-06-30 · TA获得超过4万个赞
知道大有可为答主
回答量:3400
采纳率:0%
帮助的人:548万
展开全部
select * from tableName order by rand() limit 50;
腾讯电脑管家
2018-09-25 · 百度知道官方认证企业
腾讯电脑管家
腾讯电脑管家是腾讯公司推出的免费安全管理软件,能有效预防和解决计算机上常见的安全风险,并帮助用户解决各种电脑“疑难杂症”、优化系统和网络环境,是中国综合能力最强、最稳定的安全软件。
向TA提问
展开全部
USE [2881]
GO
/****** Object:  StoredProcedure [dbo].[sp_rowpages]    Script Date: 06/12/2017 09:55:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Description: <>
-- Status:      <> 
-- =============================================
ALTER PROCEDURE [dbo].[sp_rowpages] 
    @TableName NVARCHAR(1024),                /* 数据表名 */
    @SQLFields NVARCHAR(1024) = NULL,        /* 显示字段(支持多字段,以逗号分隔) */
    @SQLWhere NVARCHAR(1024) = NULL,        /* 查询条件 */
    @OrderFields NVARCHAR(255) = NULL,        /* 显示排序字段(支持排序字,多字段以逗号分隔) */
    @PageSize INT = 10,                        /* 每页的大小(记录数) */
    @PageIndex INT = 1,                        /* 页码 */
    @RecordCount INT = NULL OUTPUT,            /* 总记录数 */
    @PageCount INT = NULL OUTPUT,            /* 总页数 */
    @SQLFields1 NVARCHAR(255) = NULL        /* 特殊显示字符(函数计算),分页后包含,优化性能 */
AS
BEGIN
    /* 分页数据查询(适用于SQL2005) */
    /* 返回值: -1 参数错误或执行出错,0-无数据,>0 页记录数量 */
    SET NOCOUNT ON
    SET @TableName = RTRIM(@TableName) 
    IF (@TableName = '')
        RETURN -1                            /* 表名不能为空 */
    SET @SQLFields = RTRIM(ISNULL(@SQLFields, N''))
    IF (@SQLFields = N'') 
        SET @SQLFields = N'*'
         
    SET @SQLFields1 = RTRIM(ISNULL(@SQLFields1, N''))
    IF (@SQLFields1 <> N'')
        SET @SQLFields1 = N', ' + @SQLFields1
             
    SET @SQLWhere = RTRIM(ISNULL(@SQLWhere, N''))
    SET @OrderFields = RTRIM(ISNULL(@OrderFields, N''))
    IF (@OrderFields = N'')
        RETURN -1                            /* 主键字段和排序字段不能同时为空 */
    DECLARE @SQL NVARCHAR(2048)   
    DECLARE @StartSQL DATETIME                /* 查询开始时间 */
    /* 计算总页数 */
    SET @SQL = N''
    IF (@PageCount IS NULL)
    BEGIN
        SET @StartSQL = GETDATE()
        SET @RecordCount = 0
        SET @PageCount = 0
        SET @SQL = N'SELECT @RecordCount = COUNT(*) FROM ' + @TableName
        IF NOT (@SQLWhere = N'')
            SET @SQL = @SQL + N' WHERE '+ @SQLWhere
        EXEC sp_executesql @SQL, N'@RecordCount int OUTPUT', @RecordCount OUTPUT
        IF NOT (@@ERROR = 0)
            RETURN -1                        /* 取得记录数出错 */
        SET @PageCount = (@RecordCount + @PageSize - 1) / @PageSize
        PRINT 'Count Time: '+LTRIM(STR(DATEDIFF(ms,@StartSQL, GETDATE()))) + N' (ms).'
        IF (@RecordCount = 0)
            RETURN 0                        /* 无数据,返回0 */
    END
    /* 处理页数范围 */
    IF @PageCount <= 0
        RETURN 0                            /* 无数据,返回0 */
    IF ISNULL(@PageSize, 0) < 1  SET @PageSize = 20
    IF ISNULL(@PageIndex, 0) < 1 SET @PageIndex = 1
    IF (@PageIndex > @PageCount) SET @PageIndex = @PageCount
    /* 分页数据查询 */
    SET @SQL = N''
--    IF (@PageIndex = 1)
--    BEGIN
--        /* 第1页的查询 */
--        SET @StartSQL = GETDATE()
--        SET @SQL = N'SELECT TOP (' + LTRIM(STR(@PageSize)) + ') '+ @SQLFields 
--            + N' FROM ' + @TableName
--        IF NOT (@SQLWhere = N'')
--            SET @SQL = @SQL + N' WHERE '+ @SQLWhere
--        SET @SQL = @SQL + N' ORDER BY '+ @OrderFields
--        --PRINT N'查询语句长度: ' + LTRIM(STR(LEN(@SQL)))
--        PRINT CASE WHEN (@SQL IS NULL) THEN 'SQL IS NULL!' ELSE @SQL END
--        EXEC sp_executesql @SQL, N'@PageSize int', @PageSize
--    END
--    ELSE
    BEGIN
        /* 第N页的查询 */
        SET @StartSQL = GETDATE()
        /* 处理分页起止点 */
        DECLARE @PageStart INT, @PageEnd INT
        SET @PageStart = (@PageIndex -1) * @PageSize + 1
        SET @PageEnd = @PageStart + @PageSize - 1
        /* 合成分页查询语句 */
        SET @SQL = N'SELECT *' + @SQLFields1 + N' FROM (SELECT ROW_NUMBER() OVER(ORDER BY ' 
            + @OrderFields + N') AS RowId,' 
            + @SQLFields + N' FROM ' + @TableName
        IF NOT (@SQLWhere = N'')
            SET @SQL = @SQL + N' WHERE ' + @SQLWhere    
        SET @SQL = @SQL    + N') AS tbl WHERE RowId BETWEEN ' 
            + LTRIM(CONVERT(VARCHAR(50), @PageStart)) + N' AND '
            + LTRIM(CONVERT(VARCHAR(50), @PageEnd)) + N' ORDER BY RowId'
        --PRINT N'查询语句长度: ' + LTRIM(STR(LEN(@SQL)))
        PRINT CASE WHEN (@SQL IS NULL) THEN 'SQL IS NULL!' ELSE @SQL END
        EXEC sp_executesql @SQL, N'@PageSize int, @PageIndex int', @PageSize, @PageIndex 
    END
    DECLARE @RETURN int, @ERROR int
    SELECT @RETURN = @@ROWCOUNT, @ERROR = @@ERROR
    IF NOT (@ERROR = 0)
        RETURN -1                            /* 分页查询执行出错 */
    PRINT N'Query Time: ' + LTRIM(STR(DATEDIFF(ms, @StartSQL, GETDATE()))) + N' (ms).'
    RETURN @RETURN
END
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式