【问题标题】:echo random id numbers from mysql database without repeating numbers?从 mysql 数据库中回显随机 id 数字而不重复数字?
【发布时间】:2011-08-05 07:03:27
【问题描述】:

如何从 mysql 数据库中回显随机 id 数字而不重复数字?

这是我的示例代码:

$query = mysql_query("SELECT * FROM store"); 
$number=mysql_num_rows($query); 

for ($count=1; $count<= $number ; $count++)
{

  $id = mysql_query ("SELECT id FROM store ORDER BY RAND() LIMIT $number");
  $id = mysql_fetch_assoc($id);
  $id = $id['id'];

  echo $id;

}

它将回显六个随机数,但有像“1 1 3 2 4 5”这样的实例,其中 1 被回显两次而不是一次。提前致谢

【问题讨论】:

    标签: php mysql random


    【解决方案1】:

    只需按 rand 排序您的结果并限制其数量,您的 id 必须是唯一的:

    SELECT * FROM store ORDER BY RAND() LIMIT 0,6
    

    【讨论】:

    • order by rand 有一些严重的缺陷,但如果数据集很小,也可以。
    • 这不是问题。问题是,select ... order by rand() 在循环内。
    【解决方案2】:

    问题是,您在循环内执行SELECT,而不是选择一次并循环结果。

    $query = mysql_query("SELECT * FROM store"); 
    $number=mysql_num_rows($query); 
    
    $result = mysql_query ("SELECT id FROM store ORDER BY RAND() LIMIT $number");
    while ($row = mysql_fetch_assoc($result)) {
        echo $row["id"];
    }
    

    顺便说一句:SELECT * 获取记录集的数量很难看,请改用SELECT count(id)

    【讨论】:

    • 感谢工作。如果你不介意我问的话,你是从哪里学会的?
    【解决方案3】:

    如果你是从 php 出来的,你可能最好(更快、更容易、没有锁定问题)在那里随机化你的数字。循环内的 SQL 查询是一种反模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      • 2020-12-09
      • 2011-10-01
      • 2019-07-13
      • 2014-05-03
      • 2022-06-24
      相关资源
      最近更新 更多