我想使用“rand alt命令”查询(底部)来获取一组随机结果,但我想从结果中获取它们,例如:
SELECT t2.id FROM index_table t1 JOIN data_table t2 ON t1.id= t2.index_id
我需要限制我得到的随机结果的数量。 我无法理解我需要使用的语法,任何帮助都非常感激。
感谢
“按rand alt排序”查询:
How can i optimize MySQL's ORDER BY RAND() function?
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
答案 0 :(得分:0)
SELECT
t2.id
FROM
index_table t1
JOIN data_table t2
ON t1.id= t2.index_id
ORDER BY
RAND()
LIMIT 5
或通过限制所需的最大条目数
答案 1 :(得分:0)
这样的事情会起作用吗?
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中删除了参数,否则我的输出始终是相同的。