我有类似这样的选择:
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()对于这个复杂而冗长的查询是不可能的。
你能帮我一把吗?
答案 0 :(得分:0)
是的,你可以使用兰德。只需添加
... ORDER BY RAND() LIMIT 1000;
在您的查询结束时。无论查询多么完整,都会在最终结果被处理时应用RAND()(EXPLAIN
结果的第一行)。