MySQL-计数、分组依据、订单依据和获取最新日期时间

MySQL-计数、分组依据、订单依据和获取最新日期时间,mysql,count,group-by,sql-order-by,Mysql,Count,Group By,Sql Order By,我有一个消息表,我需要返回消息的计数,以及特定用户发送或接收的最新消息 该表如下所示: 我得到的结果例如:对于用户id 10,是: 但我想要的结果是: 我正在尝试以下方法: CREATE TABLE messages ( `id` INT, `post_id` INT, `post_user_id` INT, `msg_user_id` INT, `msg_from` INT, `message` VARCHAR(55), `

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

该表如下所示:

我得到的结果例如:对于用户id 10,是:

但我想要的结果是:

我正在尝试以下方法:

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条记录都是唯一的,并且不只是发送“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
现在,在代码中,您可以计算出计数和其他所需的输出。或者,您可以为count触发单独的查询


我希望这能有所帮助。

请看@草莓谢谢分享,我用更完整的信息更新了问题,但不知怎的,我无法让SQLfiddle正常工作。。。TKS谢谢你的回答,但这不是我要找的,我可以使用以下选项选择分组的最新消息,但我想不出如何获得。。。从id为的消息中选择*从post_user_id=10或msg_user_id=10的消息中选择MAXid按msg_user_id分组,post_id按msg_日期描述排序