我有一條SQL語句可用於從我的Android sqlite3數據庫返回不同的行,我想通過ContentProvider
的查詢來傳遞它。如何將sqlite3關鍵字DISTINCT注入到Android ContentProvider的查詢中?
例如:
select lastName from peopleTable where upper(lastName) like upper("%smith%");
必須
select DISTINCT lastName from peopleTable where upper(lastName) like upper("%smith%");
有沒有乾淨的方式來傳遞額外的關鍵字select語句?
你正在實現'ContentProvider'嗎?你在查詢「ContentProvider」嗎?換句話說,ContentProvider實現中是否有DISTINCT關鍵字,或者您是否想將其傳遞給現有的ContentProvider或其他內容? – CommonsWare 2010-10-05 21:58:44
如果您正在訪問現有的ContentProvider,則可以修改的唯一直接SQL是選擇字符串(where子句)和按語句排序。你最好的辦法是看看這個內容提供者是否有一個給你一個DISTINCT數據集的URI。我想如果你知道底層的表結構,你也可以嘗試在where子句中找一個子查詢來給你一個獨特的數據集。我不會推薦它,但是作爲ContentProvider的所有者可以自由修改表/字段名稱並使您的子查詢無用。 – 2010-10-06 00:37:35
我有ContentProvider,但我想把它看作是一個通用的CP(即其他所有者)。我最終做的是創建一個提供DISTINCT效果的GROUP BY子句。然後我將它編碼到ORDER BY子句(sortOrder)中。然後在CP內部解析出來並將其發佈到DB查詢的GROUP BY參數中。我可能應該繞過CP並直接發出DB查詢。無論哪種方式,我都在欺騙我的初衷。 – mobibob 2010-10-06 03:45:31