SQL中的ORDER BY无法正常工作

时间:2014-10-14 14:42:06

标签: mysql sql

我有这个SQL查询:

SELECT 
       conversations_messages.conversation_id, 
       MAX(conversations_messages.message_date) AS 'conversation_last_reply', 
       MAX(conversations_messages.message_date) > conversations_users.last_view AS 'conversation_unread'
FROM 
        conversations_messages
        LEFT JOIN conversations ON conversations_messages.message_id=conversations.id
        INNER JOIN conversations_users ON conversations_messages.conversation_id=conversations_users.conversation_id
WHERE 
        conversations_users.user_id = $user_id AND 
        conversations_users.deleted=0
GROUP BY 
        conversations_messages.message_id
ORDER BY 
        'conversation_last_reply' DESC

我想要的运行良好的查询,但只有ORDER BY的最后一行不起作用,它没有按照我的要求进行排序。

唯一不起作用的是最后一行 - ORDER BY ... 我试图将其更改为ASC和DESC,但它没有响应...... *顺便说一下 - 我正在尝试排序的字段 - 是一个整数。

有人知道这是什么问题吗?

感谢。

4 个答案:

答案 0 :(得分:4)

尝试

ORDER BY conversation_last_reply

而不是

ORDER BY 'conversation_last_reply'

您当前的版本按常量字符串排序,因此根本不排序。

答案 1 :(得分:1)

您的订单附近有报价

ORDER BY 
    'conversation_last_reply' DESC
----^-----------------------^------ = bad

你应该把它改成

ORDER BY 
    conversation_last_reply DESC

或使用反引号

ORDER BY 
    `conversation_last_reply` DESC

当你按字符串排序时没有排序,因为字符串的值对于每一行总是相同的:)

答案 2 :(得分:0)

您是否尝试过order by conversations_messages.message_date

答案 3 :(得分:0)

尝试不添加引号orderby

ORDER BY conversation_last_reply