【发布时间】:2014-12-19 16:19:29
【问题描述】:
我有一个带有 PHP 脚本的站点,该脚本在返回数据中包含一个 SQL 查询,该数据由 JavaScript 文件访问。数据是一个庞大的航班数据列表,我需要能够在指定的任何一天随机选择(比方说)总航班的 40%。为了争论,让我们这样说:
$query = "SELECT * FROM `Flight_Data` WHERE DepDateTimeUTC LIKE '%1/1/14%' ";
我知道要获得随机数量的行,您只需使用ORDER BY RAND() LIMIT 40',理想情况下我想说LIMIT 40%,但这不起作用。
编辑:
$query = "SELECT * FROM `Flight_Data` WHERE DepDateTimeUTC LIKE '%1/1/14%' ";
$row = mysqli_fetch_row($result);
$total = $row[0];
$percent = $total * 0.40;
$query = "SELECT * FROM `Flight_Data` WHERE DepDateTimeUTC LIKE '%1/1/14%' LIMIT . $percent ";
【问题讨论】:
-
您可以使用解决方法,选择计算所有记录,用 php 计算 40% 并将其用作另一个查询中的限制
-
@MarcoMura 明白了。这几乎就是它所说的here(第三个google search item)
-
取决于实施。一些 SQL99 实现(例如 PostgreSQL)支持 LIMIT 参数中的表达式。或者,如果支持,SQL2008 FETCH ONLY 语法肯定允许表达式。
-
@BadZen on mysql (official site) 你只能直接用整数做一个 LIMIT,没有计算(即使 1+1 也行不通)
-
我现在唯一的想法是在将其传递给 LIMIT 之前获取计数并进行计算。