我在使用mysql时遇到了一些麻烦,事实上我有一个像这样的表:
n_doss etat date etc...
-----------------------------------
145 N 20/10
145 EC 15/10
146 N 25/10
我想要做的是为每个etat
计算我有多少文件夹(文件夹由n_doss
标识)。
麻烦的是,最重要的etat
是每个文件的最新版本。
所以我必须计算每个etat
我有多少文件,但我不能计算每个etat
的每个n_doss
,而只计算最近的文件。
我几乎尝试过所有事情,但我无法在此查询中取得成功。
我试过了:
SELECT `etat` , `n_doss`, COUNT( 'etat' )
FROM `commentaire` WHERE
GROUP BY `etat`
这与我尝试的方法无关。
我也试过
SELECT `etat` , `n_doss`, COUNT( 'etat' )
FROM `commentaire`
GROUP BY `n_doss`
HAVING max(date) with
是的,没有成功。
任何形式的帮助将不胜感激。
答案 0 :(得分:1)
SELECT c.*, cnt
FROM (
SELECT etat, COUNT(*) AS cnt
FROM commentaire
GROUP BY
etat
) cd
JOIN commentaire c
ON c.id =
(
SELECT id
FROM commentaire ci
WHERE ci.etat = cd.etat
ORDER BY
date DESC, id DESC
LIMIT 1
)
在(etat, date, id)
上创建一个索引,以便快速工作。
答案 1 :(得分:1)
SELECT a.*, c.totalCOunt
FROM commentaire a
INNER JOIN
(
SELECT etat, MAX(date) maxDate
FROM commentaire
GROUP BY etat
) b ON a.etat = b.etat AND
a.date = b.maxDate
INNER JOIN
(
SELECT etat, COUNT(*) totalCOunt
FROM commentaire
GROUP BY etat
) c ON a.etat = c.etat
答案 2 :(得分:0)
试试这个::
SELECT `etat` , COUNT( 'n_doss' )
FROM `commentaire`
GROUP BY `etat`