Mysql SQL查询,返回带限制的随机排序行,可能吗?
我正在考虑返回一个随机排序的Mysql SQL查询,返回带限制的随机排序行,可能吗?,mysql,sql,Mysql,Sql,我正在考虑返回一个随机排序的SQL响应,其中的结果是随机混合的,有一个限制。 问题是我需要所有的行返回,基本上分为组(行块)。我希望我明白了 例如,从表A中: ID | NAME | PROFESSION ++++++++++++++++++++++++++++++++ 1 | Jack | Carpenter 2 | Rob | Manager 3 | Phil | Driver 4 | Mary
SQL
响应,其中的结果是随机混合的,有一个限制。
问题是我需要所有的行返回,基本上分为组(行块)。我希望我明白了
例如,从表A中:
ID | NAME | PROFESSION
++++++++++++++++++++++++++++++++
1 | Jack | Carpenter
2 | Rob | Manager
3 | Phil | Driver
4 | Mary | Cook
5 | Tim | Postman
6 | Bob | Programmer
查询将返回如下内容:
限值为0,2时:
6 | Bob | Programmer
4 | Mary | Cook
限值为2,2:
1 | Jack | Carpenter
5 | Tim | Postman
限值为4,2:
3 | Phil | Driver
2 | Rob | Manager
注意:返回了所有表行
。在我的页面中,我需要有一个
按钮,用于向用户显示所需的数据“组”。
如何编写这样的查询?我可以在这里想到两件事:
SELECT * FROM tbl ORDER BY RAND(s);
例如,如果您想让每个用户以不同的随机顺序查看记录,可以使用他们的用户id作为种子。这样,每个用户看到记录的顺序将保持不变,但它是随机的,并且与其他用户不同。如果使用
order BY RAND()
,则必须在不可取的地方标记所选记录
您可以将total_pages
和ID
组合使用一些智能算法,例如
SELECT *
FROM my_table
ORDER BY MOD(ID, total_pages);
向表中添加一个名为random_col的列 然后,每次需要对运行的表进行随机分组时
UPDATE table SET random_col = RAND()
现在,每次要检索结果时,都要运行一个普通的select
SELECT * FROM table ORDER BY random_col ASC LIMIT x,y
结果将以相同的顺序显示,直到您通过运行“更新”再次将其随机化为止。结果必须随机,因此添加列不会使其随机化。是的,大量数据从数据库返回数据的标准是什么?是一组完全随机的行,还是它们的任何规则决定了数据返回?完全正确。随机顺序。就像你在youtube上洗牌一样?一开始决定一个随机顺序,然后你只得到它的一部分。如果只有一个用户,这是一个好主意。如果两个用户使用这个,它会混合两个搜索的结果,尽管很小的可能性,两个col可能有相同的随机数。我想说这会要求用户提交的每个搜索都有一个新表?