有没有一种比较有效的方法来比较从数据库获得的两个变量?

时间:2020-08-05 12:14:51

标签: php mysql

这有效,但是有没有更短(更有效)的方法呢? 代码比较2个数字。一个来自最近的记录,另一个来自7个记录。

$sql5="SELECT market_cap_rank FROM intelligence WHERE id='$thiscoin' order by day desc limit 0,1";
$row5 =  mysqli_fetch_row(mysqli_query($conn, $sql5));
$newest = $row5[0];
$sql6="SELECT market_cap_rank FROM intelligence WHERE id='$thiscoin' order by day desc limit 6,1"; 
$row6 =  mysqli_fetch_row(mysqli_query($conn, $sql6));
$oldest = $row6[0];
$rankdiff=$oldest-$newest;

1 个答案:

答案 0 :(得分:2)

您可以将两个查询合并为一个查询,以避免往返数据库服务器。

在SQL变量的帮助下,Assign在订购后对7行中的每一行进行排名。现在,通过过滤排名为sum()1的行,7的所有值。 如果为rank = 1,则添加它的否定状态。

请注意,如果$thiscoin来自用户,则可以更好地进行参数化查询,以避免使用PDO进行SQL注入攻击。

查询:

select sum(if(rank = 1,-mcr,mcr)) as diff_mcr
from (
    SELECT  @rank := @rank + 1 as rank,market_cap_rank as mcr
    FROM intelligence,(select @rank := 0) r  
    WHERE id = '$thiscoin' 
    order by day desc limit 0,7
) derived
where rank = 1 or rank = 7

代码:

这简直是

$rankdiff = mysqli_fetch_row(mysqli_query($conn, $sql))[0];
相关问题