Oll*_*e C 6 salesforce force.com soql
总行数在10k到100k行范围内.我可以在force.com上使用RAND()吗?不幸的是,尽管所有行都有唯一的数字标识符,但仍有许多空白,我常常想从过滤后的子集中选择一个随机行.
我怀疑没有特别有效的方法来做到这一点,但它有可能吗?
最终,我想做的就是随机从表中(或基于特定过滤条件的子集)中提取一行.
如果force.com不允许我选择一个随机行,那么我可以查询要选择的行,并为所有行分配顺序ID,比如1-1,035,然后在本地选择该范围内的随机数,比如说349,然后得到第349行?
met*_*ddy 13
您可以使用SOQL OFFSET选择随机记录.
这是你如何做到的:
Integer count = [SELECT COUNT() FROM Account];
Integer rand = Math.floor(Math.random() * count).intValue();
Account a = [SELECT Name FROM Account LIMIT 1 OFFSET :rand];
System.debug(a.name);
Run Code Online (Sandbox Code Playgroud)
不,你不能使用ORDER BY RAND()或类似的东西。您可以按实际字段排序(可选NULLS LAST等)。您可以使用 LIMIT、GROUP BY 和 HAVING 以及 MIN、MAX、COUNT...
也许如果你想写更多关于你需要显示随机行的目的......否则有什么问题ORDER BY LastModifiedDate DESC LIMIT 1?或者选择 100 行并使用Math.random() 或 Crypto.getRandomInteger()模 100显示随机行?
| 归档时间: |
|
| 查看次数: |
3753 次 |
| 最近记录: |