有没有办法从 SQL 表中获取固定数量的随机行,同时允许重复

问题描述 投票:0回答:1

对于此处的示例,我们将使用表 NAMES,我需要返回 3 行。

id 姓名
1 阿尔法
2 测试版
3
4 三角洲
5 小量

我知道代码

SELECT * FROM names ORDER BY RAND() LIMIT 3;
将返回 3 个随机行。但它完全是三个不同的行。

有没有办法在一个查询中得到三行互不影响,从而允许重复?所以结果可能是 Beta、Alpha、Delta。或 Beta、Epsilon、Beta,甚至 Beta、Beta、Beta。

sql random repeat
1个回答
0
投票

尝试通过使用

union all

拼接在一起的独立子查询来实现这一点
SELECT * FROM (SELECT id, name FROM names ORDER BY RAND() LIMIT 1) d
UNION ALL
SELECT * FROM (SELECT id, name FROM names ORDER BY RAND() LIMIT 1) d
UNION ALL
SELECT * FROM (SELECT id, name FROM names ORDER BY RAND() LIMIT 1) d

注意:我建议你不要仅仅依赖“select *”,指定你需要的列。

尝试在这里多次运行它(使用 Postgres):https://dbfiddle.uk/IwNV0z34

© www.soinside.com 2019 - 2024. All rights reserved.