【发布时间】:2017-03-14 07:58:10
【问题描述】:
我正在尝试将返回具有多列的单行的查询转换为具有一列或多列的多行。例如,我的查询看起来像以下可视化:
SELECT _id, value1, value2, value3, value4 FROM table WHERE _id IS 1;
结果:
_id value1 value2 value3 value4
----------------------------------------
1 10 11 12 13
我希望我的结果如下所示:
name value
--------------
value1 10
value2 11
value3 12
value4 13
但我也可以使用这样的东西:
value
-----
10
11
12
13
目前我在 Android 中使用 MatrixCursor 手动转换它,但理想的情况是光标已经处于可用状态。有没有办法修改我的查询以检索所需架构中的结果,或者使用临时表之类的东西来实现所需的最终状态?
此外,是否有一个通用术语来描述数据库中的此功能?
【问题讨论】:
-
如果您希望它是临时的,那么如果您需要名称和值,您可以轻松地将结果存储在列表或地图中。
-
ID 不能重复。它应该是独一无二的。因此,您不能为多行使用相同的 ID。
-
感谢 Darshan 的回复,我已经将结果存储在 MatrixCursor 中,但是在使用 CursorAdaptor 时会导致很多复杂性。最简单的方法是通过选择将数据按摩到首选布局中。我的 MatrixCursor 已经在工作了,我只是在寻找一个更优雅的解决方案。 @Vlad 这是一个很好的观点,我对保留 ID 不是很感兴趣,因为我已经知道该值(我正在查询它)。但重点是将每个结果的列添加为新行。
标签: android sqlite android-cursor unpivot