从SQL表中选择行的百分比?

时间:2014-12-19 16:19:30

标签: php mysql sql limit

我有一个带有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 ";

2 个答案:

答案 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中,%用作通配符,因此无法像您认为的那样使用它。

希望这对你有所帮助。