1、取出表总条数n
2、在应用程序中生成n个随机数(区间在0到n-1)
3、去数据库中把这些记录取出来
第二、用优化mysql查询语句的方法
网上基本上都是查询max(id) * rand()来随机获取数据。
SELECT *
FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id ASC LIMIT 5
但是这样获得的是5条连续的记录,解决办法只能是每次查询一条,查询5次。
如果只是固定取"20/30"比较容易, 只需找到"20/30"在此字符串的开始位置,再截取5个字符的长度就可以了,如:SELECT CASE WHEN CHARINDEX('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', '20/30') >0 THEN SUBSTRING('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', CHARINDEX('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', '20/30'),5) ELSE '' END
如果不一定是20/30,而是与"/"前后关联的数字(eg: 14/20, 33/66,等...),就麻烦了,你可能需要写一个抽取字符串的函数,如: f_substr(),然后在SQL里调用:
select 用户.f_substr('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg')
直接用replace就好了,,,只不过分别执行4次而已首先在字段的结尾都更新个''符号
然后在replace
给你举个例子,例如2
update
表
set
字段=replace(字段,'2','')
后面的3个数字一样的方式更新
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)