gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:29:03 25 4
gpt4 key购买 nike

我正在处理一个关于从两个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com