group-by和mysql

krugob8w  于 2021-06-15  发布在  Mysql
关注(0)|答案(3)|浏览(373)

我有下面的查询,它得到了我想要的结果,但我不能按“id\u usiliateur”分组,这是查询:

SELECT count(distinct d.id_dossier), p.name, u.id_utilisateur, u.superior
FROM dossier AS d
LEFT JOIN action AS a
ON a.id_dossier=d.id_dossier
LEFT JOIN CD AS cd
ON cd.id_dossier=d.id_dossier
LEFT JOIN utilisateur AS u
ON u.id_utilisateur=cd.id_utilisateur
LEFT JOIN personne AS p
ON p.id_personne=u.id_personne
WHERE d.id_dossier>0
GROUP BY u.id_utilisateur,d.id_dossier
HAVING (
    SELECT COUNT(a2.id_dossier)
    FROM action AS a2
    WHERE a2.fait=0
    AND a2.commentaire=0
    AND a2.id_dossier=d.id_dossier
)<1
ORDER BY d.date_creation DESC
LIMIT 500

组由id\u usiliateur是不工作的,我得到的结果为同一个用户在多行,我如何解决这个问题?
这是我得到的结果和预期的结果

wd2eg0qa

wd2eg0qa1#

对于那些有相同问题的人,我通过简单地将子查询放在and条件中解决了这个问题,并且删除了这个特定查询的having子句。

e0bqpujr

e0bqpujr2#

如果你愿意的话 id_utilisateur 很明显,那么你需要 group by id_utilisateur .
您的查询已完成 GROUP BY u.id_utilisateur,d.id_dossier ,您需要将其更改为 GROUP BY u.id_utilisateur .
如果查询中需要更多的列,请将GROUPBY语句放入内部查询,然后联接表。

nlejzf6q

nlejzf6q3#

GROUP BY 中所有未聚合的列 SELECT :

SELECT count(distinct d.id_dossier), p.name, u.id_utilisateur, u.superior
FROM . . .
WHERE . . .
GROUP BY  p.name, u.id_utilisateur, u.superior
HAVING . . .

如果您明确希望每个 u.id_utilisateur ,然后聚合所有其他列:

SELECT count(distinct d.id_dossier),
       MAX(p.name) as name, u.id_utilisateur, 
       MAX(u.superior) as superior
FROM . . .
WHERE . . .
GROUP BY  p.name, u.id_utilisateur, u.superior
HAVING . . .

相关问题