簡體   English   中英

如何使用子查詢和語句進行Realm查詢

[英]How to make Realm query with subquery and in statement

我現在用java工作Realm,我不知道如何使用子查詢。

我有兩個像下面的RealmObjects。

public class Sms extends RealmObject {
    @PrimaryKey
    private String id;
    private String address;
}
public class Statement extends RealmObject {
    @PrimaryKey
    private String id;
    private String smsId;
}

我希望與Realm進行查詢,以執行與下面的sql相同的工作。

SELECT
    *
FROM
    sms
WHERE
    id not in (
        SELECT
            sms_id
        FROM
            statement
    )
    and address = "123456789"
;

我怎樣才能實現它?


2015-12-18更新:

@geisshirt,非常感謝你的回答。

我從他的答案中得到了一個想法,下面是結果。

RealmResults<Statement> statements = realm.where(Statement.class).findAll();
RealmQuery<Sms> query = realm.where(Sms.class).equalTo("address", "123456789");
for(Statement statement : statements){
    query = query.notEqualTo("id", statement.getSmsId());
}
RealmResults<Sms> smsList = query.findAll();

我認為這將實現我的目標,但我懷疑這是實現not inin聲明中的唯一方法。

現在有沒有更清楚地做到這一點?

使用您當前的模型,您將不得不迭代:

RealmResults<Statement> statements = realm.where(Statement.class).equalTo("address", "123456789").findAll();
for(Statement statement : statements) {
    RealmResults<Sms> sms = realm.where(Sms.class).notEqualTo("id", statement.smsId).findAll();
    // do something to sms
}

我不確定查詢的真正含義:你的意思是id in而不是id not in嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM