繁体   English   中英

如何使用MySQL限制查询结果

[英]How to limit query results with Mysql

新手问题:

我有一个电子邮件表,其中有一个message_id字段(主键字段)以及其他字段,例如body,receiver_id,sender_id和parent_id。 当用户回复消息时,parent_id字段将同一线程的消息连接在一起。

现在,我有一个简单的查询,可以查询特定reciever_id下的所有消息并返回它们。 问题是我还想检查两个或更多消息是否具有相同的parent_id,如果是,我只希望返回最新的消息。

谁能对此有所启发?

我考虑过要使用CASE语句,但不确定从哪里开始。

我将在字段提交时添加时间戳。 您可以让他们使用类似于以下内容的东西:

SELECT body, receiver_id, sender_id, parent_id
FROM messages 
GROUP BY parent_id
ORDER BY timestamp DESC
LIMIT 1

注意:如果不在表上进行尝试,则无法完全知道该查询是否有效,但是希望它可以为您指明正确的方向。

编辑: @ liysd提出了一个好点,将合并的顺序。 您将需要对iself进行子查询。

SELECT *
FROM (SELECT * FROM messages WHERE parent_id = id)
ORDER BY timestamp DESC
LIMIT 1

您可以使用嵌套查询,如下所示:

    select * 
    from messages A 
    where A.receiver_id=:receiver_id
    (and timestamp = (select max(timestamp) 
                     from message B 
                     where A.parent_id = B.parent_id and A.parent_id<>NULL ))
    or A.parent_id = NULL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM