我的目標是選擇具有最高createdAt的列,由用戶分組。學說/ SQL查詢MAX與GroupBy
如果我做到以下幾點:
$qb = $this->createQueryBuilder('qb1');
$q = $qb
->select('pbs, MAX(pbs.createdAt) AS HIDDEN pbs_created')
->add('from', 'MyEntity pbs')
->groupBy('pbs.user')
->orderBy('pbs_created', 'ASC')
->getQuery();
return $q->getResult();
我得到:
+------+---------------------+---------------------+--------------+
| id_0 | createdAt_3 | sclr_5 | project_id_7 |
+------+---------------------+---------------------+--------------+
| 2137 | 2014-10-07 10:52:29 | 2017-04-25 15:42:42 | 116 |
+------+---------------------+---------------------+--------------+
+------+---------------------+---------------------+--------------+
| 5123 | 2015-11-02 15:02:55 | 2017-05-02 05:36:18 | 118 |
+------+---------------------+---------------------+--------------+
的問題是,我得到的最大價值,但返回的行不包含最大的價值。
我怎樣才能得到最新createdAt分組由用戶與關聯的實體數據?
是的。 orderBy只會在group by之後影響,所以它只會對您的「舊」或「不想要」條目進行排序。 – develth