是否可以使用ormlite“随机”从表中选择一行?

时间:2015-09-19 06:16:28

标签: android random ormlite

我想从表中选择一行,但我只想获得一行,并且该行将被随机选择。

4 个答案:

答案 0 :(得分:4)

  

我想从表中选择一行,但我只想获得一行,并且该行将被随机选择。

没有任何特殊方法调用可以执行此操作,但有一些方法可以使用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行。

答案 1 :(得分:1)

您可以使用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();
}

答案 2 :(得分:0)

我实际上做的是获取List&lt;&gt;从数据库中选择所选项目,然后使用<tbody> @foreach (var item in ViewBag.ModuleList) { <tr style="color:#000000; height:5px;"> <td height="45px;"> @item.ModuleName @Html.ActionLink("Go and Set", "ViewModule", "UserRegistration", new { idd = item.ModuleId, A = "Set" }, new { Class = "btn btn-info", style = " line-height:10px;left:3px;background-color:#24ade3; position:relative; width:65px;" }) </td> </tr> } </tbody> 对象,使用返回列表的Random作为size()。是的,我确实检查了空值。

maxInt

答案 3 :(得分:0)

它对我有用:

dao.queryBuilder().orderByRaw("RANDOM()").queryForFirst();