gpt4 book ai didi

java - 带有 IN() 的 Android SQLite 查询

转载 作者:搜寻专家 更新时间:2023-11-01 09:02:11 25 4
gpt4 key购买 nike

我有以下模型

类别(id、名称、is_active)places(id, name, category_id, .....)

根据用户偏好,类别将为 0 或 1。基于这个偏好,我想查询所有 categories.is_active = 1 的地方。

我认为有两种方法

第一种方法

  1. 查询并获取所有is_active = 1的Categories
  2. 从上面检索到的类别 ID 集合中获取所有地点的列表。

第二种方法

使用 JOIN 编写 RawQuery 并设置条件。

优化速度的最佳方法是什么?

我尝试了什么?

// 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);
}

在上面的代码中如何动态插入类型 IN ('1','2') 以便我可以从第一种方法的结果中填充它?

最佳答案

单个 rawQuery 几乎总是比两个单独的查询更快。由于您在 rawQuery 中没有任何参数,因此它会非常简单,例如;

SELECT places.* 
FROM places
JOIN categories
ON places.category_id = categories.id
WHERE categories.is_active = 1

关于java - 带有 IN() 的 Android SQLite 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14285111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com