草庐IT

mysql - 在 mysql 上使用 Limit random

我刚刚使用了这个查询SELECT*FROMquestionsORDERBYRAND()LIMIT20;在mysql数据库上,我有一个名为display的列(以及问题列),其中的值等于1。所以现在您可以在查询中看到我限制为20。我想更改值所有20显示=0。我知道这是查询updatetest3setdisplay=0whereid=11;但是这只是设置了一行的显示。对于第20行我该怎么做。提前致谢。 最佳答案 你可以这样做updatetest3setdisplay=0whereidin(selectidfromquestionsorde

php - 根据该行的 "weight"随机选择行

我有一个这样的表:IDchance11223441现在我需要从这个表中选择一个rand()SELECT*FROMtableORDERBYRAND()LIMIT1但是与ID#1和4相比,ID#2被选中的机会是它的两倍。同样,与ID#1和4相比,ID#3被选中的机会是它的四倍。有点类似于彩票。 最佳答案 这里是SQLFiddle使用仅限MySQL的解决方案select*from(selectid,@running_totalasprevious_total,@running_total:=@running_total+chanceASr

mysql - MySQL 长表的唯一随机字符串的最佳方法

我知道如何在PHP和MySQL中创建随机字符,但问题是我必须为大约10,000行的表创建一个4个字符的随机字符串。什么方法最好确保它保持独一无二?如果需要,我可以使用更长的字符串,但不能超过12。为了简单起见,表存在我需要添加一个额外的列并用4个字符的随机字符串填充它,并且键必须保持唯一。 最佳答案 一个选项:将所有可能的字符放在只有一列的表格中。val------01...9ab...z使用这个查询SELECTCONCAT(a.val,b.val,c.val,d.val)FROMcharsASaJOINcharsASbJOINch

php - 从 MySQL 数据库中选择随机问题; "correct answer"搞砸了

我正在使用PHP和MYSQL构建一个简单的测验程序。测验旨在一次显示一个问题;问题是选择题(每个问题有4个可能的答案)如果玩家选择了正确的,他将继续下一个问题;如果他选错了,测验就结束了。起初,我设计的测验如下:(1)创建了一个数据库表,其中包含1500个问题。该表包含以下列:ID(primarykey)QUESTION(thequestionitself)A1(firstanswer)A2(secondanswer)A3(thirdanswer)A4(fourthanswer)CORRECT(thecorrectanswer---whichisoneoftheaboveA1toA4)

php - 从 MySQL 中选择可变数量的随机记录

我想显示数据库中的随机记录。如果我选择,我希望能够显示X条随机记录。因此我需要从随机选择的ID列表中选择前X条记录(除非地球急剧变大,否则永远不会超过500条记录可供选择。目前有66种可能。)这个功能可以用,但是我怎样才能让它变得更好呢?/***************************************************//*RandomSite*///****************///ReturnsanarrayofrandomsiteIDsorNULL/***************************************************/f

mysql - 有没有办法在 mysql 中生成随机数并附加到字符串上?

我想编写一个生成数字1-1000的查询,并将其插入一个电子邮件地址,其中该电子邮件是一个空字符串。我知道语法不对,但是MySQL能否生成一个随机数,我可以将该随机数插入到字符串中以创建电子邮件,例如na@na122.com?我正在寻找的更新语句是这样的查询:UPDATEcontactsSETemail='na@na'+random_number(1-1000)+'.com'WHEREemail=''; 最佳答案 这是我做的CONCAT("na@na",RAND()*100,'.com')

php - 高性能MySQL随机非连续行

我试图从数据不变的表中随机获取一行。我读到有人尝试使用ORDERBYRAND(),这对于大型数据集来说很糟糕,而且扩展性不好。我还看到了让SQL获取最小/最大范围之间的随机行的解决方案,如下所示:FLOOR(MAX(needed_id)*RAND)但这仅在行顺序时有效:1,2,3,4,5,6,7,8,9,10。我需要拉出的数据不是顺序的,例如:1,2,3,4,10,11,12,13所以我认为有两种解决方案:第一个解决方案:继续运行:FLOOR(MAX(needed_id)*RAND)直到我收到一行正确的类型(1/6机会)第二个解决方案:像这样创建一个重复表(因为我的数据永远不会改变):

PHP从数据库中选择随机ID

我想从此查询中选择一个随机的userid,其中level=1(普通用户)并且alive=Yes(用户还活着并且可以玩)$getaid=$sql->query("SELECTuseridFROM`users`WHERE`level`='1'AND`alive`='yes'");我知道我可以用$totalusers=mysql_num_rows($getaid);$randomuserid=rand(1,$totalusers);选择一个随机用户ID,但在该代码中有可能选择一个已死亡的用户(活着=否)或一个工作人员(级别>=1)。有没有更好的方法可以让我选择一个随机用户ID而没有机会捕获工

php - MySQL - 有效地插入 70000 个随机唯一字符串

我正在做一个项目,我应该在其中生成至少70000个包含8个字母数字字符的代码。代码必须是唯一的。目前我正在使用php通过以下函数生成这些代码:functionrandom_unique_serial($length,PDO$conn){$codeCheck=FALSE;while(!$codeCheck){$characters='0123456789abcdefghijklmnopqrstuvwxyz';$charactersLength=strlen($characters);$randomCode='';for($i=0;$iprepare($sql);$st->bindvalu

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

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