我正在为我的Android应用程序实现一个messenger函数,并在以下sqlite架构中保存每个收到和发送的消息:
CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
`message_id` TEXT,
`sentTimestamp` INTEGER NOT NULL,
`senderUserID` TEXT,
`senderUsername` TEXT,
`senderProfilePictureUrl` TEXT,
`receiverUserID` TEXT,
`receiverUsername` TEXT,
`message` TEXT)
现在,我想概述一下我收到的所有聊天内容(例如WhatsApp中的内容)以及收到或发送的最后一条消息。我需要所有字段(SELECT *)。问题是每个聊天伙伴只能出现一次,如果我是最后一个发件人,我的最后一条消息应该出现在列表中。
示例:
预期结果:
+----------+-------------+
| User | Message |
+----------+-------------+
| other | I am good |
+----------+-------------+
这就是我到目前为止所拥有的
SELECT * FROM "+MESSAGE_TABLE+"
GROUP BY senderUserID, receiverUserID
ORDER BY id DESC
但结果如下:
+--------------+----------------+
| User | Message |
+--------------+----------------+
| other | How are you? |
| me | I am good |
+--------------+----------------+
我怎样才能做到这一点?只有1个表才能实现这一点,这样我就无法进行连接了吗?
答案 0 :(得分:1)
喜欢:
SELECT * FROM "+MESSAGE_TABLE+" where senderUserID NOT IN (SELECT distinct receiverUserID from "+MESSAGE_TABLE+")
GROUP BY senderUserID, receiverUserID
ORDER BY id DESC