android sqlite 多表查询语句,使用嵌套选择Android SQLite的复杂更新查询

本文介绍了如何在Android中使用SQLite进行多表查询,特别是如何通过嵌套选择实现复杂更新查询。示例代码展示了如何通过SQLiteQueryBuilder创建子查询,获取特定location_id和group_concat值,然后在游标上迭代更新国家/地区表。更新操作涉及连接多个表格,并通过地标类型ID关联数据,最终达到按国家分类地标的目的。
摘要由CSDN通过智能技术生成

我通过将长的SQL查询分为两部分来回答这个问题.首先,我使用SQLiteQueryBuilder创建了一个子查询,然后使用rawQuery运行了两列光标,其中包含landmark_names的location_id和group_concat值.然后,我可以在游标之间循环,以该国家/地区的所有地标名称的每个适当的并置值来更新国家/地区表.

下面的查询比上面的问题(我在发布之前进行了简化)稍微有点复杂,只是因为我必须通过地标_类型_id将地标列表表与另一个地标_类型表连接起来,而我的真正目标是将较短的地标_type列表连接起来按国家分类,而不是按国家列出的所有地标名称的长列表.无论如何,它是可行的.

public void UpdateCountryLandmarks() throws SQLException {

Cursor c = null;

String subquery = SQLiteQueryBuilder.buildQueryString(

// include distinct

true,

// FROM tables

LANDMARK_TYPE_TABLE + "," + LANDMARKS_TABLE,

// two columns (one of which is a group_concat()

new String[] { LANDMARKS_TABLE + "." + LOCATION_ID + ", group_concat(" + LANDMARK_TYPE_TABLE + "." + LANDMARK_TYPE + ",\", \") AS " + LANDMARK_NAMES },

// where

LANDMARK_TYPE_TABLE +

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值