[英]Select optimised random results from a sub query
我想使用“按rand替代顺序”查询(底部)来获取随机结果集,但我想从查询中从结果中获取它们,例如:
SELECT t2.id FROM index_table t1 JOIN data_table t2 ON t1.id= t2.index_id
而且我需要限制要返回的随机结果的数量。 我不太了解需要使用的语法,非常感谢任何帮助。
谢谢
“按兰德替代订单”查询:
SELECT *
FROM (
SELECT @cnt := COUNT(*) + 1,
@lim := 10
FROM t_random
) vars
STRAIGHT_JOIN
(
SELECT r.*,
@lim := @lim - 1
FROM t_random r
WHERE (@cnt := @cnt - 1)
AND RAND(20090301) < @lim / @cnt
) i
SELECT
t2.id
FROM
index_table t1
JOIN data_table t2
ON t1.id= t2.index_id
ORDER BY
RAND()
LIMIT 5
或您希望通过限制达到的最大条目数
这样的事情行吗?
SELECT *
FROM (
SELECT @cnt := COUNT(*) + 1,
@lim := 10
FROM FROM index_table t1 JOIN data_table t2 ON t1.id= t2.index_id
) vars
STRAIGHT_JOIN
(
SELECT t2.id,
@lim := @lim - 1
FROM index_table t1 JOIN data_table t2 ON t1.id= t2.index_id
WHERE (@cnt := @cnt - 1)
AND RAND() < @lim / @cnt
) i
我从RAND中删除了该参数,否则我的输出将始终相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.