如何解决如果没有足够的行,则用rand进行SQL顺序填充,结果重复
我有一个锻炼应用程序,用于在20、40、60(LIMIT 20..40..60)中运行测试的语言。 如果LIMIT超出所选主题中的行,如何用重复项填充结果?
表:主题“烹饪”只有18行
让我们说“从主题= rand()限制40的烹饪顺序的表中选择
如何通过重复填充结果,以便即使没有足够的行,结果也可以有40行?
table
--------------------------------------
rice
chair
spoon
knife
fork
wanted output - select * order by rand() limit 10
------------------------------------------
chair,rice,spoon,chair,knife,fork,fork
-------------------
// forced 10 terms
解决方法
这可能在应用程序中更好。但是如果需要的话,您可以乘以行数,然后排序并加上limit
:
select t.*
from t cross join
(select 1 as n union all select 2 union all select 3 . . .
select 40
) n
where t.topic = 'Cooking'
order by n.n,rand()
limit 40;
如果您知道where
子句有一定的最小值,则在临时表中可能不需要40行。
SELECT * FROM
((SELECT *,1 sortby FROM dictionary where topic='Describing weather' order by rand())
UNION ALL
(SELECT *,2 sortby FROM dictionary where topic='Describing weather' order by rand())
)dum
ORDER BY sortby
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。