我有以下查询,我想按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 举报,一经查实,本站将立刻删除。