如何在MySQL中随机选择每个用户ID(列)的5%行?

Pra*_*ala -1 mysql random-sample

如何使用MySQL随机选择每个用户标识列的5%行?

也就是说,mytable包含userid列,我想随机检查每个用户5%的输入行.因此查询应返回每个用户行的5%.

Jam*_*tch 7

你可以说:

SELECT * FROM mytable ORDER BY RAND() LIMIT 5
Run Code Online (Sandbox Code Playgroud)

如果你知道表中有100行.

如果您不知道,可以先尝试此查询以查找:

SELECT COUNT(*) FROM mytable
Run Code Online (Sandbox Code Playgroud)

否则,你也可以尝试:

SELECT * FROM mytable WHERE RAND() < 0.05 ORDER BY RAND()
Run Code Online (Sandbox Code Playgroud)

这选择了大约5%的所有行(但它有点随机,因为它基本上选择了5%的几率的行).

否则,您可以使用子查询:

SELECT * FROM mytable ORDER BY RAND() LIMIT (SELECT COUNT(*) FROM mytable)
Run Code Online (Sandbox Code Playgroud)