Android Sqlite - 如何使用UNION ALL组合查询

时间:2016-06-22 02:04:56

标签: android sqlite

我使用的是Android Sqlite,想要执行两个查询并合并结果。如果对组合结果进行排序,则一切正常。但我希望每个查询的排序顺序分开,然后组合结果。

这是我从SQL: SELECT with UNION, ORDER BY and LIMIT找到的并验证http://sqlfiddle.com/#!5/98b6d/16上的查询并且工作正常。

select * from (select * from supportContacts where (id=1) order by id asc)
UNION ALL
select * from (select * from supportContacts where (id!=1) order by RANDOM())

但是我将如何在android sqlite ContentResolver.query()上执行此查询,或者使用rawQuery有什么办法。

注意:我正在使用此查询从媒体提供程序获取MediaStore.EXTERNAL_CONTENT_URI的所有音频文件,但我知道音频文件的ID,因此我的第一个查询将只获得单个音频,第二个查询将获取除已知音频ID之外的所有音频。

1 个答案:

答案 0 :(得分:0)

您可以使用SQLiteQueryBuilder中的buildUnionQuery方法。

有关详细信息,请查看以下链接 https://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder.html#buildUnionQuery(java.lang.String[],java.lang.String,java.lang.String)

如果这个答案对您有所帮助,请将其标记为答案