mysql随机行

时间:2009-12-17 10:30:08

标签: mysql random subquery

如何形成查询以从具有'n'行的查询结果中随机选择'm'行

for ex; 来自查询结果的5行

我尝试如下但是错误

 select * from (select * from emp where alphabet='A' order by sal desc) order by rand() limit 5;

你可能想知道为什么他需要子查询,我需要从内部查询得到的前50名中的5个不同的名字。

2 个答案:

答案 0 :(得分:1)

SELECT * FROM t
ORDER BY RAND() LIMIT 5

或来自您的查询结果:

SELECT * FROM ( SELECT * FROM t WHERE x=y ) tt
ORDER BY RAND() LIMIT 5

答案 1 :(得分:1)

这将为您提供用作'm'(限制)

的数字
TRUNCATE((RAND()*50),0);

...用n替换50 要检查它,请尝试以下操作:

SELECT TRUNCATE((RAND()*50),0);

我应该警告,结果可能会返回0,这对你好吗?

例如,您可以这样做:

SELECT COUNT(*) FROM YOUR_TABLE

...并将结果存储在名为 totalRows 的变量中。然后你可以这样做:

SELECT * FROM YOUR_TABLE LIMIT TRUNCATE((RAND()*?),0);

你用'?'代替根据您使用的技术堆栈,使用 totalRows 变量 现在更清楚了吗?如果没有,请在您的问题中添加更多信息。