我想要一個MYSQL語句,它需要三個分數是4或5,並將它們排序在我的查詢結果的頂部。然後,結果應該是所有隨機後,但不是重複前2。在MySQL中做一個特殊排序,3個隨機最高分,比所有隨機
我試着做一個UNION ALL語句與相同的隨機數種子,但NOT IN語句不喜歡有一個「限制「在子查詢中。我想我需要在NOT IN語句之後對子查詢進行一些類型的轉換。思考?
select * from (select * from mydb.mytable where score in (5,4) order by rand(3423) limit 3) toplist1
UNION all
select *
from mydb.mytable allothers
where allothers.reviewid NOT IN (select reviewid from mydb.mytable where score in (5,4) order by rand(3423) limit 3)
order by rand(45423)
你的子選擇中的'order by'不是必需的。此外,這個查詢也遇到了與操作相同的問題。 'NOT IN'不一定會返回與第一個選擇相同的隨機3結果。 – Jenn
奇數。我想,因爲我們想從每組中隨機選擇3個。然後最終的結果在orderval中是隨機的..但我可能是錯的。不會是第一次,也不會是最後一次。至於不在...是不是一個問題,OP要求修正或許這是所期望的。*聳聳肩* – xQbert
嗯。其實,你可能是對的。我沒有真正考慮到我們會以相同的方式進行訂購的事實。有序隨機性。從微軟:對於指定的種子值,返回的結果始終是相同的 – Jenn