首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >distinct原理

distinct原理
EN

Stack Overflow用户
提问于 2013-04-27 03:39:54
回答 1查看 7.1K关注 0票数 0

我正在尝试为唯一用户选择最大分数对象。

所以用户应该是不同的,我应该收到用户的最大分数(订单),我需要获得这个最大分数的其他对象值,如dataAdded。

代码语言:javascript
复制
    $query = $this->createQueryBuilder('s');
    $query->select('DISTINCT s.user, s');
    $query->where('s.challenge = :challenge')->setParameter('challenge', $challenge);

    $query->andWhere('s.date_added BETWEEN :monday AND :sunday')
       ->setParameter('monday', $startDate->format('Y-m-d'))
       ->setParameter('sunday', $endDate->format('Y-m-d'));

    $query->orderBy('s.score', 'DESC');

    //$query->groupBy('s.user');
    $query->setMaxResults($limit);

    $results = $query->getQuery();

不管我怎么尝试,我都不能让distinct工作。我尝试过group by MAX(s.score),但这会将随机对象与最大得分关联起来,而不是将相同的对象关联起来。

有谁有解决这个问题的办法吗?Distinct似乎根本不起作用……

生成的查询:

代码语言:javascript
复制
SELECT DISTINCT s.user, s FROM Digital\ApplicationBundle\Entity\ChallengeScore s WHERE s.challenge = :challenge AND (s.date_added BETWEEN :monday AND :sunday) ORDER BY s.score DESC

而是一个错误;

代码语言:javascript
复制
[Semantical Error] line 0, col 18 near 'user, s FROM': Error: Invalid PathExpression. Must be a StateFieldPathExpression

值得一提的是,用户是一种关系。当我在其他文件上尝试此功能时,它工作正常...

EN

回答 1

Stack Overflow用户

发布于 2014-03-09 03:38:43

如果需要get count distinct值,可以使用countDistinct。但是,如果必须获取所有不同的值,请使用groupBy

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16244013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档