Java 带IN()的Android SQLite查询
我有以下型号 类别(id、名称、是否处于活动状态) 地点(id、名称、类别、id等) 根据用户偏好,类别将为Java 带IN()的Android SQLite查询,java,android,sqlite,android-sqlite,Java,Android,Sqlite,Android Sqlite,我有以下型号 类别(id、名称、是否处于活动状态) 地点(id、名称、类别、id等) 根据用户偏好,类别将为0或1。基于此首选项,我想查询其categories.is_active=1的所有位置 我认为有两种方法 第一种方法 查询并获取_active=1的所有类别 从上面检索到的类别ID集合中获取所有位置的列表 第二种方法 使用JOIN编写RawQuery并设置条件 优化速度的最佳方法是什么 我试过什么 // Get Active Categories public Cursor getActi
0或1
。基于此首选项,我想查询其categories.is_active=1
的所有位置
我认为有两种方法
第一种方法
// Get Active Categories
public Cursor getActiveCategories() {
return db.query(TABLE_CATEGORIES, new String[] { COLUMN_ID,
COLUMN_NAME, COLUMN_SLUG, COLUMN_ACTIVE }, COLUMN_ACTIVE + "="
+ "'1'", null, null, null, COLUMN_NAME, null);
}
// Get Places
public Cursor getPlaces() {
return db.query(TABLE_PLACES, new String[] { COLUMN_ID, COLUMN_NAME },
" type IN ('1','2')", null, null, null, null);
}
在上面的代码中,如何在('1','2')中动态插入类型
,以便我可以从第一个方法的结果填充该类型?单个rawQuery几乎总是比两个单独的查询快。因为您在rawQuery中没有任何参数,所以它将非常简单,类似于
SELECT places.*
FROM places
JOIN categories
ON places.category_id = categories.id
WHERE categories.is_active = 1
谢谢。如果我还想添加表places中的所有列。我该怎么做?