我有一个带有PHP脚本的站点,这个脚本在返回由JavaScript文件访问的数据内部有一个SQL查询。数据是一个巨大的航班数据列表,我需要能够选择(比方说)任意指定日期的总飞行量的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 ";
答案 0 :(得分:4)
您可以COUNT
所有记录,然后像这样计算您需要的%
:
$query = "SELECT COUNT(*) FROM `Flight_Data` WHERE DepDateTimeUTC LIKE '%1/1/14%' ";
$result = mysqli_query($connection,$query);
$row = mysqli_fetch_row($result));
$total = $row[0];
$percent = intval($total * 0.40);
$query = "SELECT * FROM `Flight_Data` WHERE DepDateTimeUTC LIKE '%1/1/14%' LIMIT ". $percent;
//execute your query....
答案 1 :(得分:3)
由于您使用的是PHP脚本,因此您应该能够实现您想要的效果。你可以做的是,得到表中的总行数,如:
SELECT count(*) AS Total FROM Flight_Data
使用php,你可以计算出总数的40%。
让我们说$ myPercent包含计算出的总数的40%。您可以在限制中使用$ myPercent的值
$query = "SELECT * FROM `Flight_Data`
WHERE DepDateTimeUTC LIKE '%1/1/14%'
LIMIT ".$myPercent;
在这里,我们从mysql查询字符串中转义php变量,这是一个很好的做法。
在mysql中,%
用作通配符,因此无法像您认为的那样使用它。
希望这对你有所帮助。