如何形成查询以从具有'n'行的查询结果中随机选择'm'行。
for ex; 来自查询结果的5行
我尝试如下但是错误
select * from (select * from emp where alphabet='A' order by sal desc) order by rand() limit 5;
你可能想知道为什么他需要子查询,我需要从内部查询得到的前50名中的5个不同的名字。
答案 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 变量 现在更清楚了吗?如果没有,请在您的问题中添加更多信息。