我在 mysql 中使用以下语句成功查询数据: "SELECT * FROM (SELECT * FROM `im_msg_hist` ORDER BY dTime DESC) AS T where toId='xxxx' or frmId='xxxx' GROUP BY toId
"。
但是当我在Android Room中使用这样的语句时会给出一个错误:"There is a problem with the query: [SQLITE_ERROR] SQL error or missing database (no such column: tb_msg.id)
" 这是实体:
@Entity(tableName = "tb_msg")
public class Message {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
private long id;
@ColumnInfo(name = "send_id")
private String sendId;
@ColumnInfo(name = "receive_id")
private String receiveId;
...
}
这是道:
@Dao
public interface MessageDao {
@Query("SELECT * FROM (SELECT * FROM tb_msg ORDER BY time DESC) AS T WHERE send_id=:userId or receive_id=:userId GROUP BY send_id")
LiveData<List<PersonalMsg>> getGroupByReceiveId(String userId);
}
您应该澄清房间的表名列名称。我建议你参考这个文档
Entity(tableName = "tb_msg")
public class Message {
@PrimaryKey
@ColumnInfo(name = "id")
private long id;
@ColumnInfo(name = "send_id")
private String sendId;
@ColumnInfo(name = "receive_id")
private String receiveId;
...
}