0

70 レコードの SQLite データベースがあり、カーソルを使用してこれらのレコードの 10 を取得したいと考えています。

私が持っている10個のレコードのKEY_ROWID(主キー)2, 3, 15, 23, 35, 50, 51, 60, 61, 64

これらのレコードを取得するための SQL は何ですか?

これが私がこれまでに持っているものですが、これはうまくいかないと思います...

WHEREまたはHAVING句を使用する必要がありますか?

どんな助けでも素晴らしいでしょう。

public Cursor getTopTen() {

    String ids = "2, 3, 15, 23, 35, 50, 51, 60, 61, 64";

    SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
    queryBuilder.setTables(DATABASE_TABLE);

    String[] columns = new String[] { KEY_ROWID, RECIPE, DESC, PREPTIME,
            COOKTIME, SERVES, CALORIES, FAT, CATEGORY, FAV };

    Cursor myCursor = queryBuilder.query(myDataBase, columns, KEY_ROWID + "="
            + "'" + ids + "'", null, null, null, null);

    return myCursor;
}

SQL では、上記の Java は次のとおりです。

SELECT * FROM myDataBase WHERE KEYROWID = "2, 3, 15, 23, 35, 50, 51, 60, 61, 64".
4

2 に答える 2

2

SQL は次のようになります。

SELECT * FROM myDataBase WHERE KEYROWID IN (2, 3, 15, 23, 35, 50, 51, 60, 61, 64)

列の値が特定の値のリストにあるすべての行を取得する場合は、IN 演算子を使用する必要があります。

したがって、コードは次のようになります。

public Cursor getTopTen() {

    String ids = "2, 3, 15, 23, 35, 50, 51, 60, 61, 64";

    SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
    queryBuilder.setTables(DATABASE_TABLE);

    String[] columns = new String[] { KEY_ROWID, RECIPE, DESC, PREPTIME,
            COOKTIME, SERVES, CALORIES, FAT, CATEGORY, FAV };

    Cursor myCursor = queryBuilder.query(myDataBase, columns, KEY_ROWID + " IN ("
            + ids + ")", null, null, null, null);

    return myCursor;
}
于 2012-08-09T00:20:17.650 に答える
0

あなたの状況では、HAVING 句の代わりに WHERE 句を使用する必要があります。

于 2012-08-09T00:05:17.920 に答える