如何用教义随机选择

2023-12-03

这是我在数据库中查询某些单词的方法

$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,我想获得符合条件的随机行,我将在查询中使用 order by rand() 。

I found 这个类似的问题基本上表明,由于原则上不支持 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 之后添加偏移量。

知道如何实现这一点吗?


教义团队不愿意实现这个功能.

您的问题有多种解决方案,每种方案都有其自身的缺点:

  • Add a 自定义数值函数: 看这个DQL RAND() 函数
    (如果你有很多匹配的行,可能会很慢)
  • Use a 原生查询
    (我个人尝试避免这种解决方案,我发现它很难维护)
  • 首先发出原始 SQL 查询以随机获取一些 ID,然后使用 DQLWHERE x.id IN(?)通过将 ID 数组作为参数传递来加载关联对象。
    该解决方案涉及两个单独的查询,但是might提供比第一个解决方案更好的性能(其他原始 SQL 技术比ORDER BY RAND()存在,我不会在这里详细介绍它们,您可以在这个网站上找到一些很好的资源)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用教义随机选择 的相关文章

随机推荐

  • 使用 Selenium 的 Chrome 驱动程序:“没有为 RemoteWebDriver 找到合适的构造函数”

    我正在尝试在 java 绑定下将 chrome 驱动程序与 Selenium 一起使用 我遵循以下说明 Chrome 驱动程序说明 所以我运行 ChromeDriver exe 将其放入我的代码中WebDriver driver new R
  • 由于 $(document).ready,Jquery 函数无法工作

    我们有两个js test 1 js test 2 js 在 test 1 js 中 代码是 document ready function function test alert alert hiii 在 test 2 js 中 docum
  • 如何正确安装 PyGObject? (操作系统)

    我想运行现有的简单示例并使用 GStreamer 编写一些简单的代码 具体来说 使用其 Python 绑定 我想安装软件包等来启用它 这是一个例子 http brettviren github io pygst tutorial org p
  • 使用需要将反引号作为 bash 参数的一部分传递的命令

    我有一个bash脚本如下 靠近table变量 我想像在我的脚本中一样使用反引号 bin bash ne 2 echo Usage 0 database table exit 1 database 1 table 2 hive e alter
  • Python/Django TangoWithDjango 模型和数据库

    我目前正在关注http www tangowithdjango com我正在尝试用以下内容填充现有数据库populate rango py 当我创建新类别时 我试图获取视图并喜欢填充以下内容 Python 128 64 Django 64
  • 从不同的电子邮件地址发送 Outlook 预约

    尝试通过 python 发送 Outlook 日历邀请来自动化日历通知 我想从一个单独的电子邮件地址发送电子邮件 在python的email包中 可以使用sendmail 指定from address和to address 但是 我似乎不知
  • Ruby - 返回包含 Bignum/Fixnum 的二进制补码表示的字节数组

    我试图返回一个字节数组 其中包含 Bignum 或 Fixnum 在 Ruby 中 的补码表示形式 Java 中有一个方法可以做到这一点 文档 Java toByteArray 方法 其代码 https gist github com 86
  • Admob 广告接收时的用户界面扭曲

    每当 Admob 广告出现时 Android 用户界面就会扭曲 这发生在正在播放一些动画的屏幕上 在此屏幕上 我有一个带有 android repeatCount infinite 动画的按钮 自从我将 admob 广告 ID 更改为新的
  • `无法访问'XXX':无法解析主机` Gitlab CI/CD 管道

    我们将 Gitlab 托管在私人专用服务器上 只能通过 L2TP VPN 隧道访问 域的 DNS 设置为内部网络中主机的 IP 因此显然没有 VPN 就无法访问它 问题是 当触发 Gitlab CI CD 时 作业中会出现错误 日志如下 F
  • 流数组类型在该类型的子集上失败

    我有一个在很多不同地方使用的函数 因此它的类型非常广泛 export const stringToArrayFn accessor Function string boolean Object Array
  • 禁用浏览器垂直和水平滚动条

    是否可以使用 jQuery 或 javascript 禁用浏览器垂直和水平滚动条 如果您需要动态隐藏和显示滚动条的可能性 您可以使用 body css overflow hidden and body css overflow auto 在
  • 为什么接口中的所有字段都是隐式静态和最终的?

    我只是想理解为什么接口中定义的所有字段都是隐式的static and final 保留字段的想法static对我来说很有意义 因为你不能拥有接口的对象 但为什么它们是final 隐含地 任何人都知道为什么 Java 设计者选择在界面中创建字
  • 结合 JQuery 和 AngularJS

    基于AngularJS文档 https docs angularjs org api ng function angular element It says 如果 jQuery 可用 则 angular element 是 jQuery 函
  • Android API 连接到 Wifi 网络

    我完全迷失在 WiFi API 的版本中 我想以编程方式连接到已配置的 WiFi 网络 正如这个问题中所描述的 以编程方式连接到 Android wifi 网络 我在 Android 10 上进行开发 想要编写也与旧版 Android 版本
  • 使用 Bootstrap 将侧边栏分为主要内容周围的顶部和底部

    每当屏幕尺寸接近移动设备分辨率时 我尝试使用 Bootstrap 将左对齐侧边栏分成两个不同的部分 这篇 StackOverflow 帖子设置我想要做的事情 但从下图可以看出 当我尝试让侧边栏显示为一个连接部分时 我遇到了列换行问题 下图显
  • 如何匹配NLTK CFG中的整数?

    如果我想定义一种语法 其中一个标记将匹配一个整数 我如何使用 nltk 的字符串 CFG 来实现它 例如 S gt SK SO FK SK gt SELECT SO gt d FK gt FROM 创建一个数字短语 如下所示 import
  • 初学者Python“无”问题

    我刚刚开始使用 python 自从我开始了一个新的计算器项目以来 pyCharm 在所有内容之后都没有吐出任何内容 我不确定是什么导致了这个错误 如果我能在这里得到一些帮助 我将不胜感激 这只是我展示的主要功能 这是代码 def main
  • 为什么 IEEE754 标准中除以零会产生无限值?

    我只是好奇 为什么在IEEE 754任何非零浮点数除以零都会得到无限值 从数学角度来看这是无稽之谈 所以我认为此操作的正确结果是 NaN 如果 x 是实数 则当 x 0 时 函数 f x 1 x 没有定义 例如 函数 sqrt 未定义为任何
  • 如何从 Jenkins 的提交消息中获取 JIRA 问题号

    我使用 Gitlab 进行源代码管理 使用 jenkins 进行 CI 作业 使用 JIRA 进行问题跟踪 一旦我在 gitlab 中提交了一个问题号 例如 Project 123 编辑的演示文件 我就有一个触发构建的 jenkins 钩子
  • 如何用教义随机选择

    这是我在数据库中查询某些单词的方法 query qb gt select w gt from DbEntities Entity Word w gt where w indictionary 0 AND w frequency gt 3 g