显示所有项目mysql的10%

时间:2014-02-03 16:36:34

标签: mysql sql-order-by

我只是mysql的初学者所以在学校我们有任务要做。它是这样的。按顺序显示/打印书籍中所有书籍的10%。所以我试图使用限制,但它不起作用。我能做什么?我的代码我试图使用:

select title, price from book order by price desc limit (select count(*)*0.1 from book);

谢谢你的回答!

1 个答案:

答案 0 :(得分:0)

limit值必须是硬编码常量。你不能在它们上使用变量,例如select ... limit @somevar是语法错误。您也不能使用子查询或其他动态值。因此,您要么提前获取行数并将其作为“硬编码”值填充到查询字符串中:

$ten_percent = get_from_database('select count(*) / 10 from book');
$sql = "SELECT .... LIMIT $ten_percent";

或者您只需获取所有内容,然后在达到10%时中止循环:

$sql = "SELECT ....";
$result = mysql_query($sql) or die(mysql_error());
$total_rows = mysql_num_rows($result);
$fetched = 0;
while($row = mysql_fetch_assoc()) {
    $fetched++;
    if ($fetched >= ($total_rows / 10)) {
        break; // abort the loop at 10%
    }
    ... do stuff with $row
}