微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MySQL – PHP由Inner Joining表id而不是Selected表ID排序?

我有以下查询,我想按UserView ID降序排序,看起来像是非常基本的问题,但我无法弄清楚如何做到这一点,我想继续选择用户.*现在,但订单由UsersView表主键desc,有什么想法吗?

 $phql = " SELECT *
                      FROM User
                      WHERE user_id IN
                      ( SELECT user_to
                        FROM UsersView
                        WHERE user_from=:user_to: )
                      AND gender!=:gender:
                      AND user_id NOT IN (".implode(",",$this->user->getBlocked()).")
                      ORDER BY last_visit DESC
                 /* order by should be usersview.id DESC */ 
                      "; 

运气好吗?

解决方法:

根据您的数据模型,您可以对UsersView进行额外的连接,以便您可以在ORDER BY子句中使用它的id列.

 $phql = " SELECT *
                  FROM User
        JOIN UsersView on User.user_id = UsersView.user_to
                  WHERE user_id IN
                  ( SELECT user_to
                    FROM UsersView
                    WHERE user_from=:user_to: )
                  AND gender!=:gender:
                  AND user_id NOT IN (".implode(",",$this->user->getBlocked()).")
                  ORDER BY UsersView.id DESC"; 

您也可以避免使用嵌套选择来执行过滤,并使用联接表来执行过滤:

 $phql = " SELECT *
                  FROM User
        JOIN UsersView on User.user_id = UsersView.user_to
                  WHERE user_from=:user_to:
                  AND gender!=:gender:
                  AND user_id NOT IN (".implode(",",$this->user->getBlocked()).")
                  ORDER BY UsersView.id DESC"; 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐