我正在構建一個測驗遊戲應用程序,我想改進一些查詢。
當我啓動遊戲時,我必須從數據庫中檢索一些隨機問題。
現在,當遊戲啓動時,它有一個給定的類別,以及要檢索的給定數量的數據。數據庫中的問題用於具有category_id
屬性。SQL - 選擇相同的每個輸入參數的結果數量
SELECT id
FROM game_data
WHERE category_id = :category_id
ORDER BY rand()
LIMIT :size
但在數據庫中的某些更改後,問題現在屬於一個類別subcategory_id
。所以,現在的疑問是這樣的:
SELECT id
FROM game_data
WHERE subcategory_id IN (:subcategory_id1, :subcategory_id2...)
ORDER BY rand()
LIMIT :size
現在我的問題是:
我想找回我的查詢的數量相同的子類別的問題。
例如,如果我有18個要檢索的問題和6個不同的子類別,我必須得到每個子問題的3個問題(子類別的數量隨類別而變化)。
我一直在做多個查詢,但我還沒有找到任何方式在單個查詢中執行。
會有人對此有所瞭解嗎? :)
您可以使用「聯合」,每個子查詢的子類別和一個限制。 – PhillipD
是MySQL還是MSSQL服務器? – Alex
除了PhillipD的建議之外,沒有辦法在單個查詢中執行此操作。 – Uueerdo