草庐IT

mysql rand() 替代方案 [必须满足某些条件]

我当前的查询看起来像那样SELECT*FROMuploadsWHEREapproved=1AND(up-down)>=3ORDERBYRAND()LIMIT10这是从数据库中随机选择10个至少有3个喜欢多于不喜欢的条目。问题是因为我在数据库中有超过40k个条目,这个查询至少需要1秒。我在谷歌上阅读了很多内容,但到目前为止还没有找到任何东西。对于我的情况,您有什么替代方案可以推荐吗? 最佳答案 如果您要将所有匹配的记录加载到内存中,并且它们不是太多,那么最简单的答案就是在您的SQL中删除orderby,然后对它们进行排序随机在您的应用

mysql - mysql RAND(N) 的最大种子值 N 是多少

来自https://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand...RAND(N)...如果指定了常量整数参数N,则将其用作种子值,...N的最大可能值是多少?他们所说的“整数”是指mysqltype整数(有符号-2147483648,2147483647/无符号0,4294967295)或其他? 最佳答案 Bysaying"integer"theymeanthemysqltypeinteger?这将是BIGINTEGER的最大值

mysql - 按 RAND() 排序的 SQL

这个问题在这里已经有了答案:HowdoesMySQL'sORDERBYRAND()work?(6个答案)关闭7年前。不明白为什么orderbyRAND()会随机返回记录?RAND()返回一个介于0和1之间的值,我认为我们应该按列名排序?如果有人能解释为什么按RAND()排序将以随机顺序返回行,我们将不胜感激。谢谢。顺便说一句,我正在使用MySQLWorkbench/MySQL。提前致谢,林

mysql - SQL 查询中的 RAND() 是如何工作的

下面的查询实际上是如何工作的?SELECT*FROMtORDERBYRAND()LIMIT1;它是否首先对源数据库中的所有记录进行排序,然后截断它以获得1行? 最佳答案 这个问题与LIMIT查询优化有关,而不是RAND()是如何工作的。来自manual(大胆强调我的):IfyoucombineLIMITrow_countwithORDERBY,MySQLendsthesortingassoonasithasfoundthefirstrow_countrowsofthesortedresult,ratherthansortingthe

mysql - Bookshelf.js 使用 rand() 随机排序项目

我正在使用bookshelf.js开发一个使用mariaDB的项目。我想让我的邮件随机排序。我发现这个解决方案适用于knex.jsknex('posts').select('id','text').orderByRaw('RAND()').limit(100)但我想对Bookshelf做同样的事情。 最佳答案 根据bookshelf.js文档,model.query()返回底层的knex查询构建器,您可以将您的knex解决方案应用于该构建器。Post.query(function(qb){qb.select('id','text')

mysql - MySQL 上的 MD5(RAND()) 仅返回数字

我正在运行我在谷歌搜索时找到的示例代码:SELECTMD5(RAND())但是,令我惊讶的是,MD5返回的是普通数字,而不是十六进制数字。使用CONV(MD5(RAND()),10,16)似乎可以解决我的问题,但MySQL文档指出MD5函数应该返回一个已经为十六进制的字符串。我做错了什么吗?EDIT2:这个问题似乎只存在于phpMyAdmin,而不是MySQL的命令行版本。编辑:我的MySQL版本:mysql--versionmysqlVer14.14Distrib5.1.41,fordebian-linux-gnu(x86_64)usingreadline6.1MD5值示例:6338

php - CakePHP 正在将 MySQL 整数转换为字符串……搞乱了 rand() 函数

我想使用CakePHP从我的数据库中随机获取数据样本。这是我的功能:functioncategories_list(){$this->paginate['limit']=6;$this->paginate['order']='';$this->paginate['conditions']='';//SortRandomlyStartif($this->Session->check('Category.randomSeed')){$seed=$this->Session->read('Category.randomSeed');}else{$seed=mt_rand();$this->S

php - 如何在查询中组合 RAND 和 DESC

我有一个问题:$msg_check=mysql_query("SELECT*FROMmsgsWHEREname='$name'ORDERBYrepliesDESCLIMIT5");while($row=mysql_fetch_array($msg_check)){$comment=$row['comment'];$nickname=$row['nickname'];我需要做的是取5条回复最多的评论,随机排序。我尝试将RAND与DESC结合使用,但失败了:/ 最佳答案 您可以在ORDERBY子句中应用使用RAND()的外部查询:SEL

带有 RAND() 子查询条件的 MySQL 查询

我有一个嵌套的subquery选择所选视频所在的随机AlbumID(视频可以在多个相册中),然后外部查询返回基于该AlbumID的视频和相册信息。问题是查询返回了混合结果;有时它会给我一个专辑中的一些视频,有时它会提供多个专辑中的视频,有时它什么都不返回。如果我指定一个特定的AlbumID而不是子查询,则外部查询有效,并且子查询本身正确返回1个随机AlbumID。但放在一起,它给了我不同的结果。我错过了什么?为什么会返回不同数量的行和多个相册?我已经用测试数据复制了这个问题,你可以在这里找到CREATE查询:http://pastebin.com/raw.php?i=e6HaaSGKS

php - 不使用 rand() 从 mysql 数据库返回随机行

我希望能够从数据库中提取15条左右的记录。我发现随着数据库变大,使用WHEREid=rand()会导致性能问题。我见过的所有解决方案都适合选择单个随机记录。我想得到倍数。有人知道对大型数据库执行此操作的有效方法吗?编辑:进一步编辑和测试:我使用MyISAM在新数据库上创建了一个相当简单的表。我给了这3个字段:autokey(无符号自动数字键)bigdata(大blob)和somemore(中等int)。然后我将随机数据应用到表中并使用Navicat运行了一系列查询。以下是结果:查询1:select*fromtestorderbyrand()limit15Query2:select*fr