首页 > 解决方案 > MySQL 使用 Group by 和 Order by

问题描述

我刚刚将我的网站移至新服务器。新服务器正在使用更新版本的 MySQL,这会导致 GROUP BY 和 ORDER BY 出现一些问题。我想知道是否有人可以帮助我解决这个问题,因为我尝试过的任何方法似乎都没有帮助。

我的查询如下所示:

    SELECT ib_users.`id`
         , ib_users.`name`
         , ib_users.`surname`
         , ib_users.`memberId`
         , payment.`payment_date`
         , payment.`pif`
         , membership.`membership_date`
         , membership.`type`
      FROM `ib_users`
 LEFT JOIN (   SELECT userid
                    , payment_date
                    , pif
                 FROM (  SELECT ib_membershipfees.`userid`
                              , ib_membershipfees.`fordate` `payment_date`
                              , ib_membershipfees.`pif`
                           FROM `ib_membershipfees`
                       ORDER BY payment_date DESC, added DESC
                    ) vt
             GROUP BY userid 
         ) `payment`
        ON payment.`userid` = ib_users.`id`
 LEFT JOIN (  SELECT userid
                   , membership_date
                   , type
                FROM (  SELECT ib_membership.`userid`
                             , ib_membership.`date` `membership_date`
                             , ib_membership.`type`
                          FROM `ib_membership`
                      ORDER BY membership_date DESC, added DESC
                   ) vt
           GROUP BY userid 
         ) `membership`
        ON membership.`userid` = ib_users.`id`
     WHERE ib_users.`removed` = 'no'

问题在这里:

ORDER BY payment_date DESC, added DESC) vt
                GROUP BY userid ) `payment` ON payment.`userid` = ib_users.`id`

排序不像以前那样工作,导致它从 ib_membershipfees 返回错误的行,因为由于某种原因没有应用 ORDER BY payment_date DESC。

有谁知道为什么这不再起作用,以及我该如何解决?非常感谢任何帮助。

标签: mysqlsql

解决方案


推荐阅读