admin

如何在DQL中选择具有MAX(列值)的行?

sql

我无法在我拥有的symfony2项目中获得此查询。

我的表:

id  course  datetime    numOrden   
---|-----|------------|--------
1  | 1潞  | 04/11/2016 | 1   
2  | 2潞  | 04/11/2016 | 2
5  | 3潞  | 04/11/2016 | 5  
3  | 4潞  | 03/11/2016 | 4   
4  | 5潞  | 03/11/2016 | 3

我需要获取“ numOrden”列中的值最大的课程(在这种情况下,这将是第三课程)。为此,我在Doctrine2中使用了以下查询:

public function findCourse()
{
    return $this->getEntityManager()->createQuery(
    'SELECT c FROM BackendBundle:Curso c WHERE c.numOrden in (SELECT max(c.numOrden) FROM BackendBundle:Curso )')
    ->getResult();
}

或者

    public function findCourse()
{
    return $this->getEntityManager()->createQuery(
    'SELECT c FROM Bundle:Course c WHERE c.numOrden=(SELECT max(c.numOrden) FROM Bundle:Course )')
    ->getResult();
}

但它显示以下错误:

[Syntax Error] line 0, col -1: Error: Expected Doctrine\ORM\Query\Lexer::T_CLOSE_PARENTHESIS, got end of string. (500 Internal Server Error)

阅读 154

收藏
2021-06-07

共1个答案

admin

尝试在subselect中使用另一个别名,如下所示:

    public function findCourse()
{
    return $this->getEntityManager()->createQuery(
    'SELECT c FROM Bundle:Course c WHERE c.numOrden=(SELECT max(co.numOrden) FROM Bundle:Course co )')
    ->getResult();
}

希望这个帮助

2021-06-07