mysql 随机取一条数据 (这个有点特殊哦)

zkvistor zkvistor 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
1 order by rand() 性能差
2 网上现有的
select SQL_NO_CACHE c.id

FROM document as c

JOIN (

select ROUND(

rand() * ( (SELECT MAX(id) FROM document))

) as id

) AS T

where c.id >= T.id limit 1;

这个要求ID 是连续自增的,我的表document 的主键ID ( long类型 ) 不是连续的 ,也不适应
...全文

相关推荐

MySQL性能优化的21个最佳实践.pdf

MySQL性能优化的21个最佳实践.pdf

java李杨勇

Mysql取分组后的每组第一条数据

Mysql取分组后的每组第一条数据 gruop by 分组后 进行 order by mysql会按照 先分组后排序的形式进行输出 并不能做到每组中的第一条数据取出。 我的思路是 : 先将要查询的数据表转换成已经排序的临时表 在进行 分组操作 。 因为在mysql分组是将第一个出现的数据进行展示出。 MySQL会创建临时表的几种情况: 1、UNION查询; 2、用到TEMPTABLE算法或者是UNION查询中的视图; 3、ORDER BY和GROUP BY的子句不一样时; 4、表连接中,ORDER BY的列不是驱动表中的;(指定了联接条件时,满足查询条件的记录行数少的表为[驱动表],未指定联接

weixin_38616033

MySql分组后随机获取每组一条数据的操作

思路:先随机排序然后再分组就好了。 1、创建表: CREATE TABLE `xdx_test` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `class` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 2、插入数据 INSERT INTO xdx_test VALUES (1, '张三-1','1'); INSERT INTO xdx_test VALUES (2, '李四-1',

weixin_38553381

MySQL 多表关联一对多查询实现取最新一条数据的方法示例

本文实例讲述了MySQL 多表关联一对多查询实现取最新一条数据的方法。分享给大家供大家参考,具体如下: MySQL 多表关联一对多查询取最新的一条数据 遇到的问题 多表关联一对多查询取最新的一条数据,数据出现重复 由于历史原因,表结构设计不合理;产品告诉我说需要导出客户信息数据,需要导出客户的 所属行业,纳税性质 数据;但是这两个字段却在订单表里面,每次客户下单都会要求客户填写;由此可知,客户数据和订单数据是一对多的关系;那这样的话,问题就来了,我到底以订单中的哪一条数据为准呢?经过协商后一致同意以最新的一条数据为准; 数据测试初始化SQL脚本 DROP TABLE IF EXIST

weixin_38657835

基于mysql实现group by取各分组最新一条数据

前言: group by函数后取到的是分组中的第一条数据,但是我们有时候需要取出各分组的最新一条,该怎么实现呢? 本文提供两种实现方式。 一、准备数据 http://note.youdao.com/noteshare?id=dba748092a619be0a8f160ccf6e25a5f&sub=FD4C1C7823CA440DB360FEA3B4A905CD 二、三种实现方式 1)先order by之后再分组: SELECT * FROM (SELECT * from tb_dept ORDER BY id descLIMIT 10000) a GROUP BY parent_id; 不

weixin_38744778
评论 5
收藏 已收藏
分享
返回顶部
zkvistor
MySQL 57,062 成员 56,759 内容