Mysql 如何在SQL中请求随机的3行?

Mysql 如何在SQL中请求随机的3行?,mysql,sql,Mysql,Sql,我如何请求一个随机的3行,或者在纯SQL中尽可能接近真正的随机 我试着这样做:- select * from feedtable ORDER BY RAND() DESC LIMIT 3 但有时会显示重复的行,有时会显示2行而不是3行 为什么 以下是一个查询,您可以使用它删除结果集中显示的重复项: SELECT col1, col2 FROM feedtable GROUP BY (col1, col2); ORDER BY RAND() DESC LIMIT 3 这假设您只有两列,这可能是

我如何请求一个随机的3行,或者在纯SQL中尽可能接近真正的随机

我试着这样做:-

select * from feedtable ORDER BY RAND() DESC LIMIT 3
但有时会显示重复的行,有时会显示2行而不是3行


为什么

以下是一个查询,您可以使用它删除结果集中显示的重复项:

SELECT col1, col2
FROM feedtable
GROUP BY (col1, col2);
ORDER BY RAND() DESC
LIMIT 3

这假设您只有两列,这可能是不正确的,但您可以将feedtable中的所有列名添加到上述查询中。

您可能需要在“Order by”之前将列random添加到表中。 至少这对我来说是有意义的,而且是有效的

SELECT *, RAND() AS R
FROM feedtable 
ORDER BY R DESC
LIMIT 3

我不太清楚为什么你看到的是2行而不是3行,但随机并不意味着独特/独特。你知道为什么他有时看到的是2行而不是3行吗?@TimBiegeleisen。表中只有两行,或者结果集的处理不正确。下面是如何选择随机行的一个很好的描述:我尝试使用此select*,RAND AS weburlfeed FROM feedtable ORDER BY weburlfeed DESC LIMIT 3,但仍然返回REPLICATE rowOk,因此您的feedtable中有重复的行。为了解决这个问题:1你必须“按”你的“键列”分组,或2你需要清理你的数据你有任何例子或测试我的查询吗?我尝试了这个,但没有返回任何行选择weburl,id,名称从$feedtable按weburl分组,id,名称顺序按兰德描述限制3我建议你按部分删除bug。1从feedtable中选择*检查是否一切正常,并查看您是什么键列2按键列1从feedtable GROUP中选择键列1、键列2检查是否存在重复项3按键列1从feedtable GROUP中选择键列1、键列2按兰德顺序检查顺序是否随机,4添加限制3。。。告诉我你在哪里找到错误对不起我的英语你的实际查询是什么?从feedtable ORDER BY RAND DESC LIMIT 3中选择*这将不起作用。您需要按列分组以删除重复项