选择计数查询给出不准确的结果

时间:2014-11-07 13:53:00

标签: sql

我试图查询表CANCELLATION_DEFINITION,并计算具有不是' t" - "的ACTION_TYPE值的行数。不幸的是,该查询给了我不准确的结果。例如,当表中有6行具有除" - "之外的ACTION_TYPE值时,它将为此表返回3。代码如下。

SELECT COUNT(*) 
FROM    (
     SELECT DISTINCT 
     ACTION_TYPE
     FROM CANCELLATION_DEFINITION WHERE ACTION_TYPE != '-'
     )AS distinctified  

4 个答案:

答案 0 :(得分:3)

执行select distinct时,它只返回不同的(即不同的)值。因此,如果你有action_type [“INSERT”,“UPDATE”,“UPDATE”,“DELETE”],它只会给你3个结果,因为它合并了UPDATE和UPDATE。

你真正想要的是

SELECT COUNT(ACTION_TYPE) 
FROM CANCELLATION_DEFINITION 
WHERE ACTION_TYPE != '-'

答案 1 :(得分:2)

尝试:

SELECT COUNT(*) 
FROM    (
     SELECT ACTION_TYPE
     FROM CANCELLATION_DEFINITION WHERE ACTION_TYPE != '-'
     )AS distinctified  

希望有所帮助

答案 2 :(得分:1)

尝试删除distinct关键字并将您的查询更改为: -

SELECT COUNT(ACTION_TYPE)
FROM CANCELLATION_DEFINITION WHERE ACTION_TYPE != '-';

答案 3 :(得分:0)

请尝试以下操作,我认为不需要您的子查询:

SELECT COUNT(ACTION_TYPE) AS distinctified
FROM 
CANCELLATION_DEFINITION
WHERE ACTION_TYPE != "-"