0

我有一个页面,用户可以在其中发布消息。对于发布的每条消息,有人可以做出回复,该回复将在原始消息之后立即显示。

查看我的 MySQL 表:

id | user_id  | message                    | date                | second_reply_id
1    48         Hi i post a message          2013-08-08 13:00:00   0
2    20         Hi i also post a message     2013-08-08 14:00:00   0
3    17         And i reply to message 1     2013-08-08 15:00:00   1
4    8          And i reply to message 2     2013-08-08 16:00:00   2
5    10         Hi i post a new message      2013-08-08 17:00:00   0
6    7          i reply to reply id 3        2013-08-08 18:00:00   1

有没有办法像这样订购选择查询的结果:

id | user_id  | message                    | date                | second_reply_id 
5    10         Hi i post a new message      2013-08-08 17:00:00   0
2    20         Hi i also post a message     2013-08-08 14:00:00   0
4    8          And i reply to message 2     2013-08-08 16:00:00   2
1    48         Hi i post a message          2013-08-08 13:00:00   0
3    17         And i reply to message 1     2013-08-08 15:00:00   1  
6    7          i reply to reply id 3        2013-08-08 18:00:00   1 

谢谢

4

2 回答 2

4

试试这个(不幸的是,如果您可以回复回复,这将不起作用):

SELECT
    id ,
    user_id,
    message,
    date,
    second_reply_id
FROM 
    my_table 
ORDER BY
    second_reply_id,
    IF(
        second_reply_id = 0,
        id,
        second_reply_id
    )

更新:也可以订购从最旧到最新的回复,只需使用:

ORDER BY IF(second_offer_id =0, id, second_offer_id ) ASC , IF(second_offer_id =0, 'xxxx', date ) DESC

于 2013-08-08T12:23:59.283 回答
1

通过reply_to_id 和日期将表格加入到自己的广告订单中

于 2013-08-08T12:22:04.227 回答