【问题标题】:SQL order by rand() with LIMITrand() 使用 LIMIT 进行 SQL 排序
【发布时间】:2021-10-15 10:18:56
【问题描述】:

我尝试使用 ORDER BY RAND() 从我的数据库中获取随机数据。我将数据库的限制设置为下面的代码,但它仍然给出了所有数据,限制不起作用。我能知道为什么吗?我希望有人可以帮助我,因为我不擅长 SQL 语句。最后一个问题,如果我们使用 ORDER BY RAND() 可能会得到重复数据,如何使数据不重复?先感谢您。我使用php代码。

<?php

/*
*   Get total questions
*/
$query = "SELECT * FROM `questengine` ";
//Get result
$results = $mysqli->query($query) or die($mysqli->error.__LINE__);
$total = $results->num_rows;
    
/*
*   Get Question
*/
$query = "SELECT * FROM `questengine`ORDER BY RAND() LIMIT 5";

//Get result
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);

$question = $result->fetch_assoc();

/*
*   Get Choices
*/
$query = "SELECT * FROM `choicesengine`
            WHERE question_number = ".$question['id'];
//Get results
$choices = $mysqli->query($query) or die($mysqli->error.__LINE__);

?>

【问题讨论】:

  • 您的代码中有三个查询,只有一个带有LIMIT。你有没有把他们弄糊涂?
  • 我做了 3 个查询,因为我想 MCQ 问题,第一个查询得到总问题,第二个得到问题,第三个查询得到答案。我有 50 个问题,我想将其限制为 20 个,但它不适用于我使用的代码。

标签: php sql sql-order-by


【解决方案1】:

您的第一个查询结果从未使用过,因此我已将其删除。 您的第三个查询似乎与您的第二个查询有关,因此我将它们合并为一个查询。 如有错误,请贴出数据表示例。

<?php
// Get Question and Answer
$query = "SELECT * FROM `questengine` qe JOIN `choicesengine` ce ON ce.question_number = qe.id ORDER BY RAND() LIMIT 5";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
$question = $result->fetch_assoc();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    相关资源
    最近更新 更多