gpt4 book ai didi

mysql - 使用 DataMapper 选择随机数据

转载 作者:数据小太阳 更新时间:2023-10-29 08:19:26 26 4
gpt4 key购买 nike

我试图用 DataMapper 选择随机数据集,但似乎没有这样的功能支持。

例如,我有一组数据:

+-------------------+
| ID | Name | Value |
+-------------------+
| 1 | T1 | 123 |
| 2 | T2 | 456 |
| 3 | T3 | 789 |
| 4 | T4 | 101 |
| ----------------- |
| N | Tn | value |

可以有很多数据,超过 100k 行。

我需要将数据映射到对象:

class Item
include DataMapper::Resource
property :id, Serial
property :name, String
property :value, String
end

那么,问题来了:如何从表中随机选取数据?

SQL 中的类似查询将是:

SELECT id, name, value FROM table ORDER BY RAND() LIMIT n;

最佳答案

在 OP 之后很长一段时间,但由于这是“datamapper random row”的第一个谷歌命中...

使用纯 DataMapper,无需对连续 ID 等做出假设,您可以:

Item.first(:offset => rand(Item.count))

这导致查询:

SELECT COUNT(*) FROM `items`
SELECT <fields> FROM `items` ORDER BY `id` LIMIT 1 OFFSET <n>

如果您更喜欢单个查询,但可能会降低速度,您可以:

Item.all.sample

同时导致:

SELECT <fields> FROM `items` ORDER BY `id`

显然,如果需要,请将其包装在事务中。

关于mysql - 使用 DataMapper 选择随机数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/988330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com