Count和IN子句问题

时间:2013-08-28 17:58:29

标签: php mysqli in-clause

我有一个名为员工历史的表,其结构如下。

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!=''

但是,计数会给我两个值。 提前致谢。

1 个答案:

答案 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