MySQL - COUNT、GROUP BY、ORDER BY 并获取最新日期时间

标签 mysql count group-by sql-order-by

我有一个消息表,我需要返回消息的 COUNT 条,以及特定用户发送或接收的最新消息。

表格如下所示: enter image description here

我得到的结果例如:对于用户 id 10 是: enter image description here

但是我想要的结果是:

enter image description here

我正在尝试以下操作:

CREATE TABLE messages
(
    `id` INT, 
    `post_id` INT, 
    `post_user_id` INT, 
    `msg_user_id` INT, 
    `msg_from` INT, 
    `message` VARCHAR(55),
    `msg_date` DATETIME
);

INSERT INTO messages VALUES (1, 100, 10, 15, 15, 'message 01', '2017-03-14 00:00:01');
INSERT INTO messages VALUES (2, 100, 10, 15, 10, 'message 02', '2017-03-15 00:00:01');
INSERT INTO messages VALUES (3, 100, 10, 15, 15, 'message 03', '2017-03-16 00:00:01');
INSERT INTO messages VALUES (4, 200, 20, 10, 10, 'message 01', '2017-03-20 00:00:01');
INSERT INTO messages VALUES (5, 200, 20, 10, 20, 'message 02', '2017-03-21 00:00:01');
INSERT INTO messages VALUES (6, 200, 20, 10, 10, 'message 03', '2017-03-25 00:00:01');
INSERT INTO messages VALUES (7, 300, 30, 10, 10, 'message 01', '2017-03-30 00:00:01');
INSERT INTO messages VALUES (8, 300, 30, 10, 30, 'message 02', '2017-03-31 00:00:01');


SELECT *, COUNT(id) as 'counter'
FROM (SELECT *
      FROM messages
      WHERE post_user_id = 10 or msg_user_id = 10
      ORDER BY msg_date DESC) AS t
GROUP BY msg_user_id, post_id
ORDER BY id DESC

但是我没有得到想要的结果,它得到第一条消息和日期,但我需要最新的消息和日期。

对此有什么想法吗?非常感谢。

最佳答案

所需的输出无效,因为在不同的消息日期发布了不同的消息,并且不能仅根据 post_user_id 和 msg_user_id 列出计数而不忽略其他参数。例如:在结果的第 3 行中,所需计数为 3,但所有 3 条记录都是唯一的,并且不只发送“Message3”。因此,所需的输出无效。

但是,您可以使用下面指定的查询来获取使用任何特定条件的消息详细信息,即它将打印 post_user_id = 10 或 msg_user_id = 10 的所有消息

SELECT *
      FROM messages
      WHERE post_user_id = 10 or msg_user_id = 10
      ORDER BY msg_date DESC

现在,在代码中您可以计算出计数和其他所需的输出。或者您可以触发一个单独的计数查询。

希望对您有所帮助。

关于MySQL - COUNT、GROUP BY、ORDER BY 并获取最新日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44877140/

相关文章:

python - 如何在 Pandas 中将byby()。transform()转换为value_counts()?

mysql - 基于列值的条件 sql WHERE 子句

r - 频率表和 r 中的多个变量分组

mysql - 将 count(distinct) 与复杂的选择条件 mysql 结合起来

mysql - 选择查询并过滤至少一个匹配项

mysql - 基于另一列连接 SQL 查询的结果

php - 我必须显示一个新字段计数。这是 jil_mrorfq 表中每个需求 id 的计数

php - MySQL 匹配 - 在 bool 模式下?

php - JSON 的行内行

mysql - SQL 数计数