这是可行的,但是有没有更短(更有效)的方法来做到这一点?代码比较 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 回答
慕森卡
TA贡献1806条经验 获得超8个赞
您可以将两个查询合并为一个查询,从而避免往返数据库服务器。
借助 SQL 变量为 order by 后的 7 行中的每一行分配排名。现在,sum()通过过滤排名为 或1的行来过滤所有值7。如果rank = 1,则添加其负状态。
附带说明一下,如果$thiscoin来自用户,您可以更好地进行参数化查询,以避免使用PDO.
询问:
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];
- 1 回答
- 0 关注
- 79 浏览
添加回答
举报
0/150
提交
取消