【发布时间】:2015-02-27 15:27:16
【问题描述】:
我有一个问题表,每个问题都有一个类别,我想查询数据库以首先找到特定类别的问题,然后从该类别中检索一个随机问题。我打算通过改组所有记录来做到这一点,以便它们在表中没有特定的顺序,然后找到第一个具有我正在寻找的类别的问题。 我知道这会起作用,我只是不知道如何打乱表中的所有记录以使它们以随机顺序排列。有人对如何做到这一点有任何想法吗?或者我可以使用的替代方法?提前致谢。 - 乔治
【问题讨论】:
-
如果 table 你的意思是 database table 和 你不能 shuffle the records in a table >记录你的意思是行。数据库不理解“洗牌”。许多 SQL 方言提供了一个 RANDOM() 函数,您可以使用该函数为人工列生成伪值,您可以按该列排序,或者您可以将每一行的 ID 值检索到 Delphi 中的数组中,打乱该数组,从随机数组元素中检索一个值,并使用它从数据库中查询和检索匹配的行。如果您可以提供表格定义并确认您的要求,我们可能会提供帮助。
-
从 MySQL 表中获取随机结果:stackoverflow.com/q/16928079/33732
-
不要把你的问题放在数据库里。我真的是说不要。这样做您将为您的数据库创建大量工作。而是根据特定类别过滤您的所有问题。然后生成从 0 到过滤的数据库记录数的随机数。然后从您的 qustions 过滤列表中检索 N'th qustion。现在我不知道如何使用数据库来实现这一点,因为我对使用它们的知识很少,但我仍然理解如何做到这一点的逻辑。
标签: mysql delphi random shuffle records