重复智能随机行查询?

时间:2013-03-11 22:07:24

标签: mysql sql duplicates

经过一些研究,我发现了一个适合我需求的查询:它从表中随机返回ID。 ID字段是自动增量,因此没有漏洞。

SELECT `mydb`.`myTable`.id
FROM   (SELECT Floor (Rand() * (SELECT Count(*) 
                                FROM   `mydb`.`myTable`)) num, 
               @num := @num + 1 
        FROM   (SELECT @num := 0) a, 
               `mydb`.`myTable` 
        LIMIT  2000000) b, 
       `mydb`.`myTable` 
WHERE  b.num = `mydb`.`myTable`.id

我遇到的问题是目标表(myTable)包含30-400M记录,具体取决于具体情况。在LIMIT中,我想要检索2M随机选择的ID,但是我得到了很多重复(这是预期的)。

是否可以重复删除查询并获得2M记录?我想创建一个表并让它管理UNIQUE值,但我会再次得到低于预期的值。

有什么想法?非常感谢!

1 个答案:

答案 0 :(得分:1)

您可以随意排序。比没有重复,如果你有洞,没关系。

SELECT 
   id
FROM
  mydb.myTable
ORDER BY
  RAND()
LIMIT 2000000