gpt4 book ai didi

mysql - 如何使用此查询的结果作为另一个提取 n 条随机记录的查询的来源?

转载 作者:行者123 更新时间:2023-11-29 19:44:49 24 4
gpt4 key购买 nike

我不太喜欢 SQL,但遇到以下问题。

我正在尝试实现一个从表中选择一些随机记录的查询。

我发现了这篇有趣的文章:http://jan.kneschke.de/projects/mysql/order-by-rand/

所以我按照这个例子:

SELECT name
FROM random AS r1 JOIN
(SELECT (RAND() *
(SELECT MAX(id)
FROM random)) AS id)
AS r2
WHERE r1.id >= r2.id
ORDER BY r1.id ASC
LIMIT 3;

看起来效果不错。

现在我的问题是我正在尝试使其适应我的情况。

我没有一个简单的随机表作为我的数据源,而是使用随机表,我必须从返回的整个记录​​集中提取 3 个随机记录通过此查询:

SELECT * FROM room_media rm1
JOIN room r ON rm1.id_room = r.id
JOIN room_tipology rt ON r.id_room_tipology_fk = rt.id
where rt.id = 1

如何将此查询的结果视为一个表并使用它来代替示例中之前的随机表?这样做会出现性能问题吗?

最佳答案

您的方法没有获得 3 个随机 行。它从单个随机 id 开始获取按 id 排序的三行。这些是非常不同的。

获取“n”条随机记录的最简单方法是使用order by rand()limit。所以,从这里开始:

SELECT *  -- you should list column names explicitly
FROM room_media rm1 JOIN
room r
ON rm1.id_room = r.id JOIN
room_tipology rt
ON r.id_room_tipology_fk = rt.id
WHERE rt.id = 1
ORDER BY rand()
LIMIT 3;

还有许多其他方法可以获取随机行;当上述方法不能满足性能目标时,通常会使用这些方法。

关于mysql - 如何使用此查询的结果作为另一个提取 n 条随机记录的查询的来源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41089609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com