SELECT a, b, c FROM ".TBL_A." WHERE [statement] **`ORDER BY RAND()`** LIMIT 1
UNION
(SELECT a, b, c FROM ".TBL_A." WHERE [different statement] ORDER BY RAND() LIMIT 5)";
这个查询在没有第一个ORDER BY RAND()的情况下工作正常,但我需要的是先通过第一个语句随机获取rec,然后通过其他语句随机获取另外5个。
似乎我不能在一个查询中使用两个order by语句...
有什么想法吗?
答案 0 :(得分:1)
你的方法应该有效。也许您只需将选择包装在外部选择中。
SELECT * FROM (
SELECT a, b, c FROM your_table WHERE [statement] ORDER BY RAND() LIMIT 1
) T1
UNION
SELECT * FROM (
SELECT a, b, c FROM your_table WHERE [different statement] ORDER BY RAND() LIMIT 5
) T2
请注意。确保您已考虑UNION和UNION ALL之间的区别。让他们混淆是一个常见的错误。
答案 1 :(得分:0)
你应该在没有订单的情况下全部选择它 - 然后按顺序对2个查询进行大选择。
答案 2 :(得分:0)
不要使用RAND()它是一个可怕的发电机。使用加密安全的生成器。根据平台,它可能是arcrand(),从/ dev / random,openSSL或其他来源读取。