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