我有一个包含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".
答案 0 :(得分:2)
SQL应该是:
SELECT * FROM myDataBase WHERE KEYROWID IN (2, 3, 15, 23, 35, 50, 51, 60, 61, 64)
如果要获取列值在特定值列表中的所有行,则必须使用IN operator。
所以你的代码应该是:
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;
}
答案 1 :(得分:0)
在您的情况下,您应该使用WHERE子句而不是HAVING子句。