获取具有不同where子句和顺序的所有字段

时间:2018-05-30 04:15:52

标签: android sqlite

我正在为我的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 *)。问题是每个聊天伙伴只能出现一次,如果我是最后一个发件人,我的最后一条消息应该出现在列表中。

示例:

  1. 用户其他发送"你好吗?"用户
  2. 用户发送"我很好"用户其他
  3. 预期结果:

    +----------+-------------+
    |    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个表才能实现这一点,这样我就无法进行连接了吗?

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