小编Ced*_*edo的帖子

DQL选择具有一列MAX值的每一行

使用 Symfony 2 和 Doctrine,我正在寻找一种方法来选择在特定列中具有最大值的每一行。

现在,我正在做两个查询:

  • 一获取表中列的最大值
  • 然后我选择具有此值的行。

我相信这可以通过一个查询来完成。

搜索,我在一个线程中找到了这个答案,这似乎是我正在搜索的内容,但是在 SQL 中。

因此,根据答案的第一个解决方案,我尝试构建的查询将是这样的:

select yt.id, yt.rev, yt.contents
from YourTable yt
inner join(
    select id, max(rev) rev
    from YourTable
    group by id
) ss on yt.id = ss.id and yt.rev = ss.rev
Run Code Online (Sandbox Code Playgroud)

有人知道如何在 Doctrine DQL 中制作它吗?

现在,这是我的测试代码(不工作):

$qb2= $this->createQueryBuilder('ms')
            ->select('ms, MAX(m.periodeComptable) maxPeriode')
            ->where('ms.affaire = :affaire')
            ->setParameter('affaire', $affaire);

$qb = $this->createQueryBuilder('m')
            ->select('m')
            //->where('m.periodeComptable = maxPeriode')

            // This is what I thought was the most logical way of doing …
Run Code Online (Sandbox Code Playgroud)

php sql-server greatest-n-per-group symfony doctrine-orm

4
推荐指数
1
解决办法
3683
查看次数