我无法解决这个问题,我感到非常惊讶。
我目前正在以某种随机顺序从MySQL输出一个表。我之所以这么说是因为存在一个部分依赖RAND()的公式。无论如何,我们可以假设我的问题的顺序实际上是随机的。
这一切都很好,除了我想为“会话”保持相同的顺序。我不希望它在积极使用数据的同时不断跳来跳去。我一直在尝试找出如何让MySQL第二次生成相同的序列。
我知道您可以执行RAND(N),其中N是种子,但是据我所知,每次将是完全相同的数字。因此,如果我使用它,基本上根本不会有随机因素。
我想要的是一种将种子输入ORDER BY并始终获得可靠输出顺序的方法。对于相同的种子,我将获得相同的顺序,并且如果我喂入不同的种子,它将是不同的随机顺序。
我能想到的最好的办法是,我可以为每行创建一个带有RAND的附加表单元格,并将其用于排序。有几个问题:
我必须考虑一下,但是我可以肯定,这里有一个聪明的解决方案,不需要我在数据库中添加额外的列。有没有其他人遇到过做这样的事情的需要?
答案 0 :(得分:0)
如前所述,您可以提供种子来生成随机数序列。用于生成随机数的算法针对相同的种子数返回相同的数字序列。例如;
SELECT Rand(1) AS rnd, CustomerId, CustomerName FROM Customers ORDER BY rnd
这样做,您将始终对种子“ 1”具有相同的随机顺序。您可以提供会话ID或类似的数字以获得相同的结果。
希望有帮助。
答案 1 :(得分:0)
我强烈建议您使用其中一列来生成数字:
select t.*
from t
order by rand(t.id);
这假设id
是一个整数。您可以通过调整种子rand(t.id + 1)
来获得不同的顺序。