我怎么能随机化MySQL表的顺序

时间:2017-10-20 06:51:05

标签: mysql

我必须为学校做一个测验,我将所有问题存储在MySQL表中(使用数据库是项目的要求。)有什么方法可以随机化表的记录顺序这样我就可以在必要时轻松地将它们拉入java程序,只需从顶部开始并向下工作,而不必总是选择随机的,因此冒着重复的风险?

1 个答案:

答案 0 :(得分:0)

我可以看到多种方法来处理您的问题,但需要更多关于您的用例的信息来猜测它们的可行性。

首先想到的是将已经挑选的问题与客户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更新这些UUID:

UPDATE questions SET sort = uuid() ORDER BY rand();

要选择一些问题,只需使用该列来排序结果。

SELECT questionId, question FROM questions ORDER BY sort;

当你有很多问题时,index列上的sort可能很有用。我想没有一个就足够快。

除了UUID之外,你还可以使用一些空间消耗较少的数据,它只需要是相对随机的。