我想選擇以隨機順序排排序由group_id
:ORDER BY RAND()和組GROUP_ID
id group_id
1 1
2 1
3 2
4 2
5 3
6 4
我想將它們進行排序像下面或隨機,但仍分組:
id group_id
5 3
3 2
4 2
1 1
2 1
6 4
下面會對它們進行排序,但我希望排序是隨機的。如何實現這一目標?
SELECT * FROM table ORDER BY group_id DESC
以下是我正在計算出的實際應用程序的示例查詢。
SELECT * FROM (SELECT requests.*, accounts.username, accounts.password
FROM requests LEFT JOIN accounts ON requests.acc_id = accounts.id
WHERE requests.status NOT IN(1) AND accounts.status=1 ORDER BY RAND()
) AS subquery GROUP BY acc_id
花了我一陣子弄明白了,但你基本上想在'group_id'右邊對_randomly_進行排序?換句話說,你想要一個隨機順序,所有具有相同'group_id'的行彼此相鄰? – Rick
你不應該使用'ORDER BY RAND()',因爲它不僅告訴mysql「請扔掉所有索引」,而且「將整個結果集寫出到磁盤並使用filesort」。你的表格現在可能足夠小,以至於不太明顯,但隨着數據集的增長,這將變成*指數級惡化。 – Sammitch