[英]Is it possible to 'randomly' select a row from a table using ormlite?
我想從表中選擇一行,但是我只想獲得一行,並且該行將被隨機選擇。
我想從表中選擇一行,但是我只想獲得一行,並且該行將被隨機選擇。
沒有任何特殊的方法調用可以執行此操作,但是可以使用QueryBuilder
來完成此操作。
如果您有數字ID,則應使用類似的方法:
qb = dao.queryBuilder();
qb.where().raw("id >= (ABS(RANDOM()) % MAX(id) + 1)");
entity = qb.queryForFirst();
Sqlite RANDOM()
返回一個大的正整數或負整數。 ABS()
使其為正, MAX(id)
允許我們根據最大id
值進行調制。 +1
允許我們實際選擇最大id
行。
您可以使用queryRaw:
Relation result = null;
String query = "SELECT * from relations ORDER BY RANDOM() LIMIT 1";
try {
result = queryRaw(query, getRawRowMapper()).getFirstResult();
} catch (SQLException e) {
e.printStackTrace();
}
我實際上所做的是從數據庫中獲取選定項目的List <>,然后使用Random
對象,將返回列表的size()
用作maxInt
。 是的,我確實檢查了空值。
Dao dao = getHelper().getObjectDao();
PreparedQuery<Object> query = dao.queryBuilder().[query].prepare();
Object object = null;
List<Object> resultList = dao.query(query);
if(resultList != null && resultList.size() > 0){
Random random = new Random();
int selected = random.nextInt(resultList.size() - 1);
object = resultList.get(selected);
}
這個對我有用:
dao.queryBuilder().orderByRaw("RANDOM()").queryForFirst();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.