【问题标题】:MySQL GROUPBY show newest rowMySQL GROUP BY 显示最新行
【发布时间】:2023-01-02 02:58:26
【问题描述】:

我有一个我正在使用的消息传递系统,它从我的 Facebook 业务页面接收消息并将信息存储在我的数据库中。回调中提供的信息是发件人 ID、收件人 ID 和消息数据。我想将发件人和收件人之间的所有邮件分组在一起,并仅返回列表顶部的最新结果(按行 ID 号)。

例如 :

ID | Sender ID  |   Recipient ID  | is_read
1  | 67890      |   12345         | 1
2  | 23232      |   12345         | 0
3  | 12345      |   67890         | 1
4  | 67890      |   12345         | 0
5  | 12345      |   23232         | 1
6  | 55555      |   12345         | 1

我不想显示发件人 ID 为“12345”的任何结果。

我需要的结果应该是这个样子

Result | Row ID  |   Sender ID
1      | 4       |   67890
2      | 2       |   23232
3      | 6       |   55555

这是我当前的查询。无论 senderid 顺序如何,都应首先返回包含最新消息的数组。目前,我得到随机结果。

$sql = "SELECT id, senderid, sender_name, is_read FROM (SELECT id, senderid, sender_name, is_read FROM FB WHERE senderid != '".$fb_page_id."' GROUP BY senderid) AS f ORDER BY is_read ASC LIMIT ".$page_num * $perpage.", ".$perpage;

这必须是简单的东西……只是想不通……大声笑。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    如果您只需要结果集中的发件人及其最新 ID,我们可以在此处使用聚合:

    select max(id) as last_id, sender_id
    from fb
    where sender_id != 12345
    group by sender_id
    order by last_id desc
    

    【讨论】:

      猜你喜欢
      • 2014-04-22
      • 2012-01-14
      • 2023-04-01
      • 1970-01-01
      • 2016-01-22
      • 1970-01-01
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多