【发布时间】:2014-07-21 12:37:57
【问题描述】:
我需要对我的大桌子进行分层样本。具体来说,我想从我的表中选择 1/n 行没有偏差,即随机选择,选择每第 n 行,等等。
在我问这个问题之前,我尝试过this。但是,它对我不起作用,因为我使用的是 InfiniDB 引擎,而且正如我后来发现的那样,它不支持子表达式中的变量或类似的东西。有谁知道没有用户变量的方法?
我在想这样的事情:在我的表中,每一行都有一个唯一的字母数字 字符串 id,它可以看起来像 "1234567890",或者像 "abcdef12345"。我正在考虑以某种方式将该字符串转换为数字,然后使用模函数从我的表中仅选择 1/n 行。但是,我不知道如何进行转换,因为这个字符串不是十六进制的。
注意:我的表没有有一个自动递增的列。
【问题讨论】:
-
选择每第 n 行不是随机的。
-
@DanBracuk 没错,但它也完全没有偏见,并提供了分层样本,这正是我想要的。
-
您的字母数字字符串是十六进制且完全连续的吗?
-
@Arth 不,遗憾的是它不是十六进制的。但是,如果您所说的连续是指“没有空格”,那么是的。
-
如何确定给每个值赋予哪个字母数字字符串?
标签: mysql sql database infinidb