android - 获取具有不同 where 子句和顺序的所有字段
问题描述
我正在为我的 android 应用程序实现一个信使功能,并将每个接收和发送的消息保存在以下 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 *)。问题是每个聊天伙伴只能出现一次,如果我是最后一个发件人,我的最后一条消息应该出现在列表中。
例子:
- 用户其他发送“你好吗?” 用户我。
- 用户me向用户other发送“我很好” 。
预期结果:
+----------+-------------+
| 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 个表,这样我就无法进行连接吗?
解决方案
喜欢:
SELECT * FROM "+MESSAGE_TABLE+" where senderUserID NOT IN (SELECT distinct receiverUserID from "+MESSAGE_TABLE+")
GROUP BY senderUserID, receiverUserID
ORDER BY id DESC
推荐阅读
- c++ - 使用C ++的while循环退出条件中的指针算术?
- c# - 我的变量即使在日志中也没有改变它说变量改变[统一]
- python - 如何在 Python 中对嵌套字典进行 2 次排序?
- java - 从 Uri 到 Environment.DIRECTORY_DCIM
- r - 填充 R 时堆叠直方图改变比例
- firebase - 用户是否需要创建一个帐户才能读取/写入 Firebase
- c# - 为什么 Blazor WebAssembly @foreach{} 无法呈现列表?
- mysql - 通过 My-SQL Workbench 在 SQL 中添加外键给出错误 1064
- excel - 如何获得多行的行总和?
- python - Python plotly加载本地图像