如何形成一个查询来选择'm'行随机地从一个查询结果有'n'行。mysql随机行
for ex;从具有50行
我试着像如下查询结果 5行,但它的错误
select * from (select * from emp where alphabet='A' order by sal desc) order by rand() limit 5;
ü可以想一想,为什么他需要子查询,我需要从一组顶部的5个不同的名字50由内部查询产生。
如何形成一个查询来选择'm'行随机地从一个查询结果有'n'行。mysql随机行
for ex;从具有50行
我试着像如下查询结果 5行,但它的错误
select * from (select * from emp where alphabet='A' order by sal desc) order by rand() limit 5;
ü可以想一想,为什么他需要子查询,我需要从一组顶部的5个不同的名字50由内部查询产生。
SELECT * FROM t
ORDER BY RAND() LIMIT 5
或从您的查询结果:
SELECT * FROM (SELECT * FROM t WHERE x=y) tt
ORDER BY RAND() LIMIT 5
这会给你为 'M'(限制)
TRUNCATE((RAND()*50),0);
...替代50与正使用的数字。
要检查它尝试以下操作:
SELECT TRUNCATE((RAND()*50),0);
我应该警告说,这可能是一个结果返回0,这是正确的吗?
例如,你可以做这样的事情:
SELECT COUNT(*) FROM YOUR_TABLE
...并把结果保存在一个名为totalRows例如变量。那么你可以这样做:
SELECT * FROM YOUR_TABLE LIMIT TRUNCATE((RAND()*?),0);
你在哪里替换'?'与totalRows变量,根据您使用的技术堆栈。
现在更清楚了吗?如果不是,请在您的问题中添加更多信息。
对不起,我不明白你的解决方案。可以告诉我更多请 – ArK 2009-12-17 11:29:47
编辑,看看它是否更清晰 – 2009-12-17 11:35:59
第二查询结果的错误如下: ERROR 1248(42000):每一个派生表必须有它自己的别名 – ArK 2009-12-17 11:22:17
刚闭幕后添加 'some_name'(不带引号)parenthese – 2009-12-17 11:42:10
注意'ORDER BY RAND()'当行数变大时变得昂贵 – 2009-12-17 11:44:09