我通过将长的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 +