Mysql从复杂结果中选择随机行

时间:2014-10-10 15:54:47

标签: mysql

我有类似这样的选择:

SELECT TABLE_4.ID, TABLE_4.USERNAME, TABLE_4.PHOTO,

SELECT(COUNT(SOMETHING) FROM TABLE_1 WHERE ..) AS NUM_ALL
SELECT(COUNT(SOMETHING) FROM TABLE_1 WHERE ..) AS NUM_DONE
SELECT(COUNT(SOMETHING) FROM TABLE_2 WHERE ..) AS NUM_LIKES

SELECT(COUNT(SOMETHING) FROM TABLE_3 WHERE ..) AS FOLLOWING
SELECT(COUNT(SOMETHING) FROM TABLE_3 WHERE ..) AS FOLLOWERS

CASE WHEN...

FROM TABLE_4
LEFT JOIN...
LEFT JOIN...
LEFT JOIN...

WHERE <condition>

GROUP BY TABLE_4.ID LIMIT 1000;

假设此查询有5000个结果。我希望以随机顺序排列前1000个。我认为rand()对于这个复杂而冗长的查询是不可能的。

你能帮我一把吗?

1 个答案:

答案 0 :(得分:0)

是的,你可以使用兰德。只需添加

... ORDER BY RAND() LIMIT 1000;

在您的查询结束时。无论查询多么完整,都会在最终结果被处理时应用RAND()(EXPLAIN结果的第一行)。