我只是mysql的初学者所以在学校我们有任务要做。它是这样的。按顺序显示/打印书籍中所有书籍的10%。所以我试图使用限制,但它不起作用。我能做什么?我的代码我试图使用:
select title, price from book
order by price desc
limit (select count(*)*0.1 from book);
谢谢你的回答!
答案 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
}