我有一个名为员工历史的表,其结构如下。
tbl_employee_history 结构
id|history_nr|history_value|employee_id
1 82 83 1
2 86 84 1
3 87 85 1
4 603 1
5 82 83 2
6 86 83 2
7 87 83 2
8 603 83 2
这是我桌子的虚拟数据。现在我想要计算所有那些history_nr在82,86,87,603中的员工,并且history_value不应该是空的,就像在上面的例子中一样,count应该是1,因为对于员工id 2,所有值都不为空。这是我实现计数的查询。
SELECT count(employee_id) FROM tbl_employee_history where history_nr IN(82,86,87,603) AND history_value!=''
但是,计数会给我两个值。 提前致谢。
答案 0 :(得分:0)
删除查询的distinct()
部分,这将只返回唯一值。由于您从employee_id
1和2分别有4行,因此它只会抓取具有不同(唯一)employee_id
的第一行。
因此它只会提取2条记录,每条employee_id
一条记录。
SELECT count(employee_id) FROM tbl_employee_history where history_nr IN(82,86,87,603) AND history_value != ''
//Returns 7 Rows
SELECT count(distinct(employee_id)) FROM tbl_employee_history where history_nr IN(82,86,87,603) AND history_value != ''
//Returns 2 Rows