【问题标题】:Limit on DQL Subquery Without Query Builder限制没有查询生成器的 DQL 子查询
【发布时间】:2013-08-06 11:12:29
【问题描述】:

我可以在不使用查询生成器的情况下限制子查询吗? 示例:

$results = $em->createQuery('
    SELECT d
    FROM FLIContractBundle:DieselPrice d
    WHERE d.date = (
        SELECT p.date
        FROM FLIContractBundle:DieselPrice p
        ORDER BY p.date DESC
        LIMIT 1
    )
')->getResult();

【问题讨论】:

  • 在打电话给getResult()之前能不能不打电话给setMaxResults()
  • 不在子查询上,我不能。
  • 你可以试试MAX(p.date)。我不确定这是否是一个有效的 DQL 函数

标签: php postgresql doctrine-orm


【解决方案1】:
SELECT d
FROM FLIContractBundle:DieselPrice d
WHERE d.date = (
    SELECT max(p.date)
    FROM FLIContractBundle:DieselPrice p
)

【讨论】:

  • 这适用于这个查询,但我的问题的答案是,“你不能”。
  • @Ascherer 我对您的评论的回答时间差不到一分钟。我没看到。您的答案是错误的,因为带有maxorder by 没有意义,因为结果只有一行。顺便说一句,你的回答比我的让你成为小偷晚了两分钟。而且我不是反对它的人。
  • 我的答案不见了,我意识到了订单,但不是这样。你的回答是在我的评论之后出现的,只有你投了反对票。有点难以从我自己的评论中窃取。
  • 我投了反对票,因为实际上您在子查询中留下了订单。
【解决方案2】:

如果您想要一个查询,最好的办法是使用Native Query

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多