zoukankan      html  css  js  c++  java
  • 随机获取数据库的数据

    随机获取数据库的数据

    最近的在开发自己的博客,里面有个功能需要随机推荐这个功能。

    不同数据库随机获取 10 条数据

    转载:https://www.cnblogs.com/gc2013/p/3580796.html

    SQL Server:
    SELECT TOP 10 * FROM T_USER ORDER BY NEWID()
    
    ORACLE:
    SELECT * FROM (SELECT * FROM T_USER ORDER BY DBMS_RANDOM.RANDOM()) WHERE RONUM <= 10
    
    MySQL:
    SELECT * FROM T_USER  ORDER BY  RAND() LIMIT 10
    
    Access:
    SELECT TOP 10 * FROM T_USER ORDER BY rnd([一个自动编号字段])
    
    这条语句在 Access 中的“查询”中是可以运行并得到随机结果的,但在 ASP.NET等后台程序代码中却无法得到预期的随机效果。
    正确的写法如下:
    
    以ASP.NET为例:
    
    Random random = new Random(System.Guid.NewGuid().GetHashCode());
    int r = random.Next();
    string sql = "SELECT TOP 10 * FROM T_USER ORDER BY RND(" + (-r) + "*自动编号字段)"

    Mysql数据库

    转载:http://www.111cn.net/database/mysql/40168.htm

    普通方法

    本人现在使用的是Mysql数据库。

    这条sql语句适用于数据库数据量小时的方式(普通方式,效率低下):

    SELECT * FROM T_USER  ORDER BY  RAND() LIMIT 10
    

     

    JOIN的方法

    SELECT * 
    
    FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`) – (SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`)) AS id) AS t2 
    
    WHERE t1.id >= t2.id 
    
    ORDER BY t1.id LIMIT 10;

    再把语句完善一下,加上MIN(id)的判断。

    完整查询语句是:

    SELECT * FROM `table`
    
    WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`)))
    
    ORDER BY id LIMIT 1;
    
    SELECT *
    
    FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2
    
    WHERE t1.id >= t2.id
    
    ORDER BY t1.id LIMIT 1;
  • 相关阅读:
    C语言结构体中的函数指针与函数
    写博客
    图灵C/C++图书阅读路线图
    c语言预处理
    Gnu gprof
    linux下全目录全文搜索强大工具grep
    openssl源代码结构
    js学习笔记——脚本化浏览器窗口
    js学习笔记——js的功能限制
    js学习笔记——在html中嵌入脚本
  • 原文地址:https://www.cnblogs.com/-wenli/p/10485111.html
Copyright © 2011-2022 走看看