我的表格如下:
ID EMP_ID NAME ACTIVITY_DATE ACTIVITY_CODE
1 EMP01 ROCKY 2018-02-19 AC04
2 EMP02 SMITH 2018-02-19 AC09
3 EMP02 SMITH 2018-02-19 AC10
4 EMP01 ROCKY 2018-02-20 AC04
5 EMP01 ROCKY 2018-02-20 AC04
6 EMP03 RICKY 2018-02-22 AC05
7 EMP03 RICKY 2018-02-22 AC07
8 EMP02 SMITH 2018-02-22 AC09
我想从查询结果中消除重复的日期并按 ID 顺序显示所有相应的字段,我的表格应该如下所示:
ID EMP_ID NAME ACTIVITY_DATE ACTIVITY_CODE COUNT
1 EMP01 ROCKY 2018-02-19 AC04 3
4 EMP01 ROCKY 2018-02-20 AC04 2
6 EMP03 RICKY 2018-02-22 AC05 3
我尝试过这个查询:
SELECT ID, EMP_ID, NAME, ACTIVITY_DATE, ACTIVITY_CODE
FROM emp_entries
GROUP BY ID, EMP_ID, NAME, ACTIVITY_DATE, ACTIVITY_CODE
但它并没有消除重复的条目。
只有当我这样做时它才起作用:
SELECT COUNT(ACTIVITY_DATE), ACTIVITY_DATE
FROM emp_entries
GROUP BY ACTIVITY_DATE.
但它只显示一个字段。
最佳答案
Use inner join and subquery:
select e1.ID ,e1.EMP_ID ,e1.NAME,e1.ACTIVITY_DATE,e1.ACTIVITY_CODE,e2.count
from emp_entries e1 inner join
(
SELECT COUNT(ACTIVITY_DATE) as count, ACTIVITY_DATE, min(id) as mid
FROM emp_entries
GROUP BY ACTIVITY_DATE
) e2 on e1.id=e2.mid
关于mysql GROUP BY 显示所有对应字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52423086/