这是我在数据库中查询一些单词的方法
$query = $qb->select('w')
->from('DbEntities\Entity\Word', 'w')
->where('w.indictionary = 0 AND w.frequency > 3')
->orderBy('w.frequency', 'DESC')
->getQuery()
->setMaxResults(100);
我正在使用mysql,我想获得符合条件的随机行,我在查询中使用rand()的顺序。
我发现这个类似的问题基本上表明,由于在理论中不支持ORDER BY
RAND,因此可以将主键随机化。但是,在我的情况下无法做到这一点,因为我有一个搜索条件和一个where子句,因此并非每个主键都可以满足该条件。
我还找到了一个代码段,建议您使用OFFSET来随机化行,如下所示:
$userCount = Doctrine::getTable('User')
->createQuery()
->select('count(*)')
->fetchOne(array(), Doctrine::HYDRATE_NONE);
$user = Doctrine::getTable('User')
->createQuery()
->limit(1)
->offset(rand(0, $userCount[0] - 1))
->fetchOne();
对于这是否可以帮助我解决在缺乏随机支持的情况下的工作,我有些困惑。我无法在setMaxResult之后添加偏移量。
知道如何实现吗?
Doctrine团队不愿意实施此功能。
有几种解决方案,每种都有其缺点:
添加一个自定义数字函数:请参见此DQL RAND()函数
(如果您有很多匹配的行,可能会很慢)
使用本机查询 (我个人试图避免这种解决方案,但我发现这种解决方案难以维护)
首先发出原始SQL查询以随机获取一些ID,然后WHERE x.id IN(?)
通过将ID数组作为参数传递,使用DQL 加载关联的对象。 该解决方案涉及两个单独的查询,但 可能会 比第一个解决方案具有更好的性能(不ORDER BY RAND()
存在其他原始SQL技术,在此不做详细介绍,您可以在该网站上找到一些不错的资源)。
我在用数学。函数获取从0到“max”数字范围内的整数。但据sonarqube称,这是“安全热点”的媒介问题。
问题内容: 这是我的表结构。在这里我想随机选择4行,所以我在查询中使用RAND()mysql函数,我的问题是 如何配对到行。我的意思是,我想始终选择pid 2和3。我需要按以下顺序。 我不想打破对A2 A3 或或或等 我使用下面的查询,但对我不起作用 问题答案: turbod与他的答案很接近,他只是随机排序,当您似乎想要按pid排序时,在获得所需的随机行以及与A2和A3有关的行之后:
问题内容: 我正在使用MSSQL Server2005。在我的数据库中,我有一个表“ customerNames”,其中有两列“ Id”和“ Name”以及大约。1,000个结果。 我正在创建一个功能,每次必须随机选择5个客户。谁能告诉我如何创建一个查询,该查询每次执行查询时都会随机获得5行(Id和Name)? 问题答案: 也就是说,似乎每个人都可以访问此页面,以获取对您的问题的更一般的答案: 在
微调器板条箱有一个枚举,其中包含大量可能的微调器。 这是枚举(跳过除顶部和底部4之外的所有值): 新微调器易于创建: 但是,我希望随机选择一个微调器,这是行不通的: 因为: 如何随机选择枚举值,并使用该值显示随机微调器?
我正在编写一个二十一点游戏。我有一个所有可用牌类型的枚举。交易时,我想使用Random从枚举中随机选择一张牌给玩家。如何使用整数值对应枚举值?或者,我如何为该枚举的变量随机选择枚举值? 纸牌Enun:
问题 你想从一个序列中随机抽取若干元素,或者想生成几个随机数。 解决方案 random 模块有大量的函数用来产生随机数和随机选择元素。 比如,要想从一个序列中随机的抽取一个元素,可以使用 random.choice() : >>> import random >>> values = [1, 2, 3, 4, 5, 6] >>> random.choice(values) 2 >>> random