0
我必須爲學校做一個測驗,並且將所有的問題都存儲在一個MySQL表中(使用數據庫是項目的一個需求。)有什麼辦法嗎?可以隨機化表格記錄的順序,這樣我就可以在必要時輕鬆地將它們拖入java程序中,只需從頂部開始並向下工作,而不必隨意選擇一個隨機的副本並冒着重複的風險?我如何隨機化MySQL表的順序
我必須爲學校做一個測驗,並且將所有的問題都存儲在一個MySQL表中(使用數據庫是項目的一個需求。)有什麼辦法嗎?可以隨機化表格記錄的順序,這樣我就可以在必要時輕鬆地將它們拖入java程序中,只需從頂部開始並向下工作,而不必隨意選擇一個隨機的副本並冒着重複的風險?我如何隨機化MySQL表的順序
我可以看到多種方式來處理您的問題,但需要更多的用例信息來猜測它們的可行性。
第一個想到的是將已經選擇的問題與客戶端ID一起寫入另一個表中。所以當你選擇下一個問題時,你可以簡單地排除那些已經在另一個表中的問題。
要對錶格「重新排序」,最簡單的方法是簡單地添加一個排序列。
我的表看起來像這樣:
CREATE TABLE `questions` (
`questionId` int(11) NOT NULL AUTO_INCREMENT,
`question` varchar(1000) NOT NULL,
`sort` varchar(36) DEFAULT '',
PRIMARY KEY (`questionId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
的sort
列將包含的UUID,所以很可能不會衝突。
現在,更改順序,我只是更新與新的那些的UUID:
UPDATE questions SET sort = uuid() ORDER BY rand();
要選擇一些問題,只需使用該列命令的結果。當你有很多的問題
SELECT questionId, question FROM questions ORDER BY sort;
在sort
列的index
可能是有用的,說成千上萬。我想它會很快沒有一個。
而不是UUID
您也可以使用一些較少耗費空間的數據,它只需要是相對隨機的。
當您得到結果時,只需對數組進行洗牌就更簡單了。後端是什麼? – wast
是的,我認爲,但我有更多的問題在表中比在陣列中的位置。我已經解決了如何隨機排列問題出現的順序,但是當我將它們輸入到數組中時,它始終只是表格頂部的前幾個問題。 – Darragh
嘗試ORDER BY RAND()? – wast