有没有更有效的方法在mysql中实现同样的功能(通过php)

有没有更有效的方法在mysql中实现同样的功能(通过php),php,mysql,Php,Mysql,我有下面的代码,可能的拼写错误应该选择3列,第一列是排名,反对和损失的百分比 SELECT COUNT(B.F_FACTOR) AS RANK, A.F_OPPOSITION, A.F_FACTOR FROM ( SELECT F_OPPOSITION, IF(SUM(F_RESULT='L',=1,1,0) AS F_NUM, IF(SUM(F_RESULT IN ('

我有下面的代码,可能的拼写错误应该选择3列,第一列是排名,反对和损失的百分比

      SELECT COUNT(B.F_FACTOR) AS RANK, A.F_OPPOSITION, A.F_FACTOR
      FROM
          (
          SELECT
          F_OPPOSITION, 
          IF(SUM(F_RESULT='L',=1,1,0) AS F_NUM,
          IF(SUM(F_RESULT IN ('W','D','L'),=1,1,0) AS F_DENOM,
          ROUND(SUM(F_NUM/F_DENOM),2) AS F_FACTOR
          FROM $table
          GROUP BY F_OPPOSITION 
          ) A,
          (
           SELECT
           F_OPPOSITION, 
           IF(SUM(F_RESULT='L',=1,=1,=0) AS F_NUM,
           IF(SUM(F_RESULT IN ('W','D','L'),=1,=1,=0) AS F_DENOM,
           ROUND(SUM(F_NUM/F_DENOM),2) AS F_FACTOR
           FROM $table
           GROUP BY F_OPPOSITION 
           ) B
     WHERE A.F_FACTOR <= B.F_FACTOR 
           OR (A.F_FACTOR=B.F_FACTOR AND A.F_OPPOSITION=B.F_OPPOSITION)
     GROUP BY A.F_OPPOSITION, F_FACTOR
     ORDER BY A.F_RANK ASC, A.F_FACTOR DESC, A.F_OPPOSITION DESC;
我可能会将其作为cron作业运行,每晚更新一个表,然后从该表中执行基本的select x,y,z,以使用php将其显示到屏幕上,我可能会这样做

但是,从sql的角度来说,要获得相同的输出,无论是在键入还是在处理方面,他们的学习速度更快/更容易


谢谢。

在数据库中操作结果几乎总是比在本例中使用服务器端语言PHP实现相同的结果要快。所以只需运行一个crontab。

添加了cron作业来更新每晚创建的表,处理时间可以忽略不计

是的,我同意,这是我将采取的方法,但这不是我想要的问题的答案,有没有更快的方法纠正上述陈述,以获得相同的输出?