切换风格

默认Lavender Sky Flowers Wizard Snow Beige California City Dragon Black London Sunset glow Pink Cloud
12下一页

2

主题

30

积分

0

精华

用户组 

易积分
4
热心
0
好评
0
MySql 语句[复制链接]
发表于 2020-11-26 13:57:11 | 显示全部楼层 |阅读模式
60易积分
在sp表里面有20万条数据 想随机有条件取40条数据   

居然是随机就不能相同啦目前自己用这方法也能获取但是有点慢好像有时获取出来这条件 视频类型还是错的,select * from `sp` where`视频类型`='游戏' order by rand() limit 40

请问有没有高效率语句。自己菜鸟一个不懂MySql 语句。
百度也百度过来找不到相关问题。求好心人帮忙

最佳答案

易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

17

主题

439

积分

0

精华

用户组 

易积分
159
热心
0
好评
0
QQ
发表于 2020-11-26 13:57:12 | 显示全部楼层
22222222
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

7

主题

315

积分

0

精华

用户组 

易积分
55
热心
0
好评
0
发表于 2020-11-26 14:49:11 | 显示全部楼层
大佬我不会用求教
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

9

主题

1183

积分

0

精华

用户组 

易积分
2147
热心
0
好评
1

活跃会员

发表于 2020-11-26 16:44:49 | 显示全部楼层
本帖最后由 tester 于 2020-11-26 16:55 编辑

rand()放在ORDER BY 子句中会被执行多次,20万的数据最少好几秒.
SELECT * FROM `table`
WHERE id >= (SELECT floor(RAND() * (SELECT MAX(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;

随机一条的.1改成10,会随机产生10条连续的.

易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

2

主题

30

积分

0

精华

用户组 

易积分
4
热心
0
好评
0
发表于 2020-11-26 19:29:55 | 显示全部楼层
tester 发表于 2020-11-26 16:44
rand()放在ORDER BY 子句中会被执行多次,20万的数据最少好几秒.
SELECT * FROM `table`
WHERE id >= (SELE ...

老哥你这个我百度也看到过 但是看不懂不知道怎么修改   还有这个好像是没有条件的
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

2

主题

30

积分

0

精华

用户组 

易积分
4
热心
0
好评
0
发表于 2020-11-26 19:31:43 | 显示全部楼层
136444518 发表于 2020-11-26 19:29
老哥你这个我百度也看到过 但是看不懂不知道怎么修改   还有这个好像是没有条件的 ...

怎么修改访问这个sp表  条件是视频类型`='游戏
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

9

主题

1183

积分

0

精华

用户组 

易积分
2147
热心
0
好评
1

活跃会员

发表于 2020-11-26 20:47:59 | 显示全部楼层
136444518 发表于 2020-11-26 19:31
怎么修改访问这个sp表  条件是视频类型`='游戏

table换成sp ,where后面加个and条件呗
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

2

主题

30

积分

0

精华

用户组 

易积分
4
热心
0
好评
0
发表于 2020-11-26 23:04:33 | 显示全部楼层
tester 发表于 2020-11-26 20:47
table换成sp ,where后面加个and条件呗

SELECT *
FROM `sp` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `sp`)-(SELECT MIN(id) FROM `sp`))+(SELECT MIN(id) FROM `sp`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id LIMIT 1 where`视频类型`='游戏';    老哥这是哪里错误了 不行啊
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

2

主题

30

积分

0

精华

用户组 

易积分
4
热心
0
好评
0
发表于 2020-11-26 23:05:46 | 显示全部楼层
136444518 发表于 2020-11-26 23:04
SELECT *
FROM `sp` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `sp`)-(SELECT MIN(id) F ...

SELECT *
FROM `sp` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `sp`)-(SELECT MIN(id) FROM `sp`))+(SELECT MIN(id) FROM `sp`)) AS id) AS t2
WHERE `视频类型`='游戏' t1.id >= t2.id
ORDER BY t1.id LIMIT 1;  这样也不行
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

1

主题

67

积分

0

精华

用户组 

易积分
2486
热心
0
好评
0
发表于 2024-4-28 15:24:54 | 显示全部楼层
ѧϰ
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

QQ|sitemap|免责声明|RGB颜色对照表|手机版|小黑屋| 易如意 - E4A中文编程学习交流论坛

GMT+8, 2025-5-1 17:19 , Processed in 0.090194 second(s), 33 queries .

Powered by Discuz! X3.4

© 2001-2018 eruyi.cn

返回顶部