我正在尋找一種特殊的要求,從我對MySQL數據庫的查詢中尋找訂單以不同的方式。例如。在具有字段user_id和user_rating和user_department的數據庫中具有以下數據。通過在MySQL查詢中隨機混合的記錄進行排序
+------------------------------------------------------+
| user_id | user_rating | user_department |
+------------------------------------------------------+
| 1 | 102 | A |
| 2 | 33 | B |
| 3 | 43 | C |
| 4 | 54 | A |
| 5 | 63 | A |
| 6 | 214 | B |
| 7 | 82 | A |
| 8 | 87 | C |
| 9 | 43 | A |
| 10 | 98 | A |
| 11 | 73 | C |
| 12 | 31 | A |
+------------------------------------------------------+
鑑於上述結構我想在他們的順序結果user_rating爲each_department排序,我需要在最高每個user_department 5個記錄其中INTIAL 3條應該是在他們的等級秩序,但休息2應該是隨機的。
因此在上述情況下,輸出將類似於:
+------------------------------------------------------+
| user_id | user_rating | user_department |
+------------------------------------------------------+
| 1 | 102 | A |
| 10 | 98 | A |
| 7 | 82 | A |
| 12 | 31 | A |
| 5 | 63 | A |
| 6 | 214 | B |
| 2 | 33 | B |
| 8 | 87 | C |
| 11 | 73 | C |
| 3 | 43 | C |
+------------------------------------------------------+
我嘗試過使用Web選項自定義順序由喜歡用場函數,但無法找到那麼多有用的在這裏。也嘗試使用子查詢來解決它,但該選項也看起來不可行,因爲MySql不允許我在查詢中一起使用IN和LIMIT關鍵字。
有沒有更好/更簡單的方法來解決這個問題。
在您的上下文中,運行一系列SQL是否可行?例如。爲每個部門創建一個具有前三名的臨時表,然後運行另一個來自每個部門的2個隨機數,但臨時表中尚不存在? –
是的,可以完成,第二個查詢隨機記錄應該在第一個查詢後留下的剩餘記錄中選擇。 – lalit