gpt4 book ai didi

mysql - MYSQL获取一个用户在不同聊天中的所有对话

转载 作者:行者123 更新时间:2023-11-29 12:30:55 26 4
gpt4 key购买 nike

我正在开发 Facebook 风格的聊天,并试图获取一个用户与其他用户的所有最新对话。现在,我正在获取所有最新对话,但如果其他用户已写信给我。我想做的是,例如我有 2 个对话,对话 1 是我写入的最新对话,但现在我写入对话 2,当我刷新页面时,对话 2 将是第一个。现在,如果对话 1 的另一个人给我写信,如果我刷新页面,对话 1 将是第一个。这是我正在使用的 2 个表:

CREATE TABLE users (
id int(255) not null auto_increment,
username varchar(150) null,
email varchar(150) null,
password varchar(255) null,
salt varchar(255) null,
pic varchar(255) not null,
primary key(id)
) ENGINE = INNODB DEFAULT CHARSET=utf8;

CREATE TABLE chat (
id int(255) not null auto_increment,
id_us int(255) not null,
id_receptor int(255) not null,
message varchar(3000) not null,
chat_date datetime not null,
primary key (id),
index chatUsId(id_us),
index chatRecId(id_receptor),
foreign key (id_us) references users(id) on delete cascade,
foreign key (id_receptor) references users(id) on delete cascade
) ENGINE = INNODB DEFAULT CHARSET=utf8;

这是我正在使用的查询

SELECT m.id_us, m.id_receptor, u.username, u.pic 
FROM users AS u, chat AS m
WHERE (m.id_us = u.id AND m.id_receptor =:id_us or m.id_receptor = u.id AND m.id_us =:id_us)
AND m.chat_date = (SELECT MAX( c.chat_date ) FROM chat AS c WHERE m.id_us = c.id_us AND m.id_receptor = c.id_receptor )
group by u.username
ORDER BY m.id DESC

在这种情况下:id_us 可以是例如 1我知道它不正确,因为它没有做我想做的事情,但我一直在努力寻找获得我想要的结果的方法,但我被困住了,任何帮助将不胜感激。为了更好地解释自己,我想做的是,例如当你在 facebook 聊天时,facebook 消息列表可以查看你最近的对话。

最佳答案

好的,这样怎么样:(使用 123 作为 user1 的 id)

   select T1.user2_id, users.username, users.pic, max(cdate) maxDate from
(select chat.id_receptor user2_id, max(chat_date) cdate
from chat
where chat.id_us=123
group by chat.id_receptor
union distinct
(select chat.id_us user2_id, max(chat_date) cdate
from chat where chat.id_receptor = 123
group by chat.id_us)) T1
inner join users on (users.id = T1.user2_id)
group by T1.user2_id
order by maxDate desc

关于mysql - MYSQL获取一个用户在不同聊天中的所有对话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27537565/

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