我有以下查询,我想按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";