Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在Delphi中洗牌记录表?_Mysql_Delphi_Random_Shuffle_Records - Fatal编程技术网

Mysql 如何在Delphi中洗牌记录表?

Mysql 如何在Delphi中洗牌记录表?,mysql,delphi,random,shuffle,records,Mysql,Delphi,Random,Shuffle,Records,我有一个问题表,每个问题都有一个类别,我想查询数据库,首先查找特定类别的问题,然后从该类别中检索一个随机问题。我正计划这样做,把所有的记录洗牌,使它们在表中没有特定的顺序,然后找到第一个问题,它有我要找的类别。 我知道这会起作用,我只是不知道如何洗牌表中的所有记录以随机顺序获得它们。有人知道怎么做吗?还是我可以用的另一种方法?提前谢谢。 -George一般来说,这取决于您的数据库。例如,在Oracle中,您可以使用 select <fields> from questions whe

我有一个问题表,每个问题都有一个类别,我想查询数据库,首先查找特定类别的问题,然后从该类别中检索一个随机问题。我正计划这样做,把所有的记录洗牌,使它们在表中没有特定的顺序,然后找到第一个问题,它有我要找的类别。 我知道这会起作用,我只是不知道如何洗牌表中的所有记录以随机顺序获得它们。有人知道怎么做吗?还是我可以用的另一种方法?提前谢谢。
-George

一般来说,这取决于您的数据库。例如,在Oracle中,您可以使用

select <fields>
from questions
where <some-conditions>
order by dbms_random.value
选择
从问题
哪里
按dbms_random.value排序

但我怀疑这是否是一个好办法。如果您愿意,您可以查询“给我每个类别的一个随机问题”,或者,更接近实际任务,只需获取所有问题并对客户端进行一些筛选。

如果表指的是数据库表,记录指的是行,则您不能乱洗表中的记录。数据库不理解“洗牌”。许多SQL方言都提供了一个RANDOM()函数,您可以使用该函数为人工列生成伪值,您可以按该列排序,也可以在Delphi中将每行的ID值检索到一个数组中,对该数组进行无序排列,从随机数组元素中检索值,并使用该函数从DB中查询和检索匹配行。如果您可以提供表def并确认您的问题,我们可能会提供帮助。从MySQL表获取随机结果:不要在数据库中回答您的问题。我的意思是不要。这样做,您将为数据库创建大量的工作。而是根据特定类别过滤所有问题。然后生成从0到筛选数据库记录数的随机数。然后从过滤后的问题列表中检索第N个问题。现在我不知道如何使用数据库来实现这一点,因为我对使用它们的了解太少,但我仍然理解如何实现这一点的逻辑。从我的问题标签判断,数据库是MySQL。为什么你怀疑这是一个好方法?我在上面的评论中提到了RANDOM,如果你唯一的内容是完全错误的数据库的相同信息(问题明显标记为MySQL),我看不出这有什么价值。