gpt4 book ai didi

mysql - mysql中的空值sql连接

转载 作者:行者123 更新时间:2023-11-29 10:36:09 25 4
gpt4 key购买 nike

我正在执行此查询

SELECT m.chat_id, m.msg_sender_id, m.message, m.id,
DATE_FORMAT(m.created_at, '%Y-%m-%d %H:%i:%s') as created_at,
g.id as group_id, g.name as group_name, g.image as group_image
FROM message as m
INNER JOIN chat as c ON c.id = m.chat_id
LEFT OUTER JOIN group as g ON c.group_id = g.id
WHERE c.id = 434
ORDER BY m.id ASC

我想要实现的是从聊天中获取所有消息,并且如果有聊天涉及组则返回组。组附加到聊天对象(而不是消息对象)。由于某种原因,我在所有行上都得到了group

您能建议我如何实现这一目标吗?

=============编辑==============

group 表结构如下所示:

  `id` int(11) NOT NULL AUTO_INCREMENT,
`created_at` datetime(6) NOT NULL,
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`image` longtext COLLATE utf8_bin,
`status` int(11) DEFAULT NULL,
`creator_id` int(11) NOT NULL

chat 表结构如下所示

  `id` int(11) NOT NULL AUTO_INCREMENT,
`created_at` datetime(6) NOT NULL,
`group_id` int(11) DEFAULT NULL,
`person1_id` int(11) NOT NULL,
`invitation_id` int(11) NOT NULL,

message 表如下所示

  `id` int(11) NOT NULL AUTO_INCREMENT,
`message` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
`created_at` datetime(6) NOT NULL,
`chat_id` int(11) NOT NULL,
`msg_sender_id` int(11) NOT NULL,

这是查询的结果

434 14  Some text   900 2017-09-10 09:48:56 3   My group 1  image.jpg
434 13 Some text 2 901 2017-09-10 09:48:59 3 My group 1 image.jpg
434 14 Some text 3 935 2017-09-16 15:37:07 3 My group 1 image.jpg
434 14 Some text 4 968 2017-09-21 06:52:56 3 My group 1 image.jpg

最佳答案

评论太长了。

您的查询是正确的。您有一个用于聊天消息内部联接。您有一个左外连接

我认为您可能误解了结果集。结果集是一个表,每行都有所有列。您不会获得一些用于消息的列,然后获得其他用于聊天的列。这就是 SQL 的工作原理。

或者,您的查询按 m.id 排序。也许这种排序恰好将所有带有组的消息带到顶部。

关于mysql - mysql中的空值sql连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46401155/

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