【发布时间】:2011-03-27 01:03:09
【问题描述】:
如何为以下任务制定查询:
假设您以 user:1 身份登录 我想在我进行过的每个对话中获得一排。 对于我想获得的每一行, 对话中第一行的“主题” 第一行的“日期时间” “消息”此对话的最后一条消息,无论是谁写的
创建表消息(
ID INT NOT NULL AUTO_INCREMENT 主键,
FromID INT NOT NULL,
ToID INT NOT NULL,
对话ID INT NOT NULL,
主题 varchar(255),
消息 varchar(255),
日期时间日期时间
) 引擎=InnoDB;
CREATE TABLE 对话(
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
) 引擎=InnoDB;
插入对话(ID)值(1),(2),(3);
INSERT INTO messages (FromID, ToID, ConversationID, Subject, Message, DateTime) VALUES (1,2, 1, "Hi", "This is a test message", "2010-08-08 16:23:48");
插入消息(FromID、ToID、ConversationID、主题、消息、日期时间)值(1,2、1、“”、“嘿,你还没有回答”、“2010-08-08 16:23:52”);
插入消息(FromID、ToID、ConversationID、主题、消息、日期时间)值(2,1、1、“”、“嗨,这是我的答案”、“2010-08-08 16:23:59”);
INSERT INTO messages (FromID, ToID, ConversationID, Subject, Message, DateTime) VALUES (2,1, 2, "2.Hi", "2.This is a test message", "2010-08-08 16:25: 48");
插入消息(FromID、ToID、ConversationID、主题、消息、日期时间)值(1,2、2、“”、“2.Hi back”、“2010-08-08 16:25:52”);
插入消息(FromID、ToID、ConversationID、主题、消息、日期时间)值(2,1、2、“”、“2.Hi 这是我的答案”、“2010-08-08 16:25:59”) ;
INSERT INTO messages (FromID, ToID, ConversationID, Subject, Message, DateTime) VALUES (2,1, 3, "3.Hi", "3.This is a test message", "2010-08-08 16:27: 48");
插入消息(FromID、ToID、ConversationID、主题、消息、日期时间)值(1,2、3、“”、“2.Hi back”、“2010-08-08 16:27:52”);
插入消息(FromID、ToID、ConversationID、主题、消息、日期时间)值(1,2、3、“”、“2.你在吗?”、“2010-08-08 16:27:59”) ;
【问题讨论】:
-
是否只能在 2 个人之间进行对话?即,会话中所有消息的用户 ID 是
FromID还是ToID? -
是的,只有两个人的对话
标签: sql mysql greatest-n-per-group