mysql - PHP MySQL SELECT 最新条目按 ID 分组并按时间戳排序

标签 mysql

我正在处理一个关于从两个 MySQL 表中选择数据的问题。

First table holds messages | messages | (id, msg_group_id, to_user_id, from_user_id, datetime)

Second table holds user data | profiles | (user_id, name, firstname, ...)

ATM 的工作方式是,我可以选择 ALL 具有特定“to_id”的消息,并通过添加 JOIN 语句获取发送消息的用户的姓名和名字。

我现在的问题是我想不出一种方法来选择某个 msg_group_id 的最新消息。

我已经尝试过 GROUP BY msg_group_id 结合 ORDER BY datetime DESC。

但这只会抛出消息表中的第一个条目。但我想最后一个。 :-)

我希望你能帮助我。 :-)

我的实际 SQL 语句:

SELECT LEFT(messages.message, 10) AS message, 
`messages`.`msg_group_id`,  
`messages`.`datetime`,  
`profiles`.`name`,  
`profiles`.`firstname`  
FROM `messages`  
LEFT JOIN `profiles`  
ON `messages`.`from_user_id` = `profiles`.`user_id`  
WHERE `to_user_id` = '2'  
ORDER BY `datetime` DESC  
LIMIT 20;

提前致谢

示例输入:

[消息]

|id|msg_group_id|to_user_is|from_user_id|message       |datetime|
0  | 1          | 1        | 2          | Hello World1 | 2015-12-21 10:42:00
1  | 1          | 1        | 2          | Hello World2 | 2015-12-21 10:43:00
2  | 1          | 1        | 2          | Hello World3 | 2015-12-21 10:44:00

[个人资料]

user_id|name    |firstname|
1      | Test   | User
2      | Thanks | Worldname

结果(我不想要的)

message|msg_group_id|datetime|name|firstname
Hello World1 | 1 | 2015-12-21 10:42:00 | Thanks | Worldname

结果(我想要的)

message|msg_group_id|datetime|name|firstname
Hello World3 | 1 | 2015-12-21 10:44:00 | Thanks | Worldname

最佳答案

这个查询可能有帮助:

SELECT m.message, m.msg_group_id, m.datetime, u.name, u.firstname 
FROM message as m, profiles as u
WHERE m.from_user_id = u.user_id 
GROUP BY m.msg_group_id
ORDER BY m.datetime DESC

或者使用INNER JOIN

SELECT m.message, m.msg_group_id, m.datetime, u.name, u.firstname 
FROM message as m
INNER JOIN profiles as u ON m.from_user_id = u.user_id
GROUP BY m.msg_group_id
ORDER BY m.datetime DESC

关于mysql - PHP MySQL SELECT 最新条目按 ID 分组并按时间戳排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34392581/

相关文章:

mysql - 设置 MySQL SSL 连接

php - 触发 jQuery 抓取 HTML 并保存到数据库的按钮

mysql - 有多少独特的头衔?

mysql - 查找没有关系的所有记录的查询速度非常慢

php - 为什么 num_rows 给出表中所有行的数量?

javascript - 使用 JavaScript 将 Mysql 日期转换为欧元格式

java - android远程数据库连接问题

c# - 为 MVC 模型排序数据库信息

mysql - 我能知道 ALTER TABLE 命令还剩多长时间吗?

mysql - 从具有简单输出的许多表中检索数据