mysql子查询计数返回全局计数并忽略where

时间:2014-01-22 22:23:57

标签: mysql sql subquery

目前“matrix_mct_versions”是一个包含73个条目的表。当我运行此查询时,“version_count”始终返回73,即完整的行数。当我自己运行子选择查询时,我会根据发送的com_ID参数获得实际计数。我无法看到我做错了什么..有人可以帮忙吗?

SELECT
    a_ID as com_ID,
    option_number,
    comment,
    word_count,
    gender,
    sample,
    (
        SELECT
            count(a_ID)
        FROM
            matrix_mct_versions
        WHERE
            com_ID = com_ID
    ) as version_count
FROM
    matrix_mct
WHERE
    attribute_number = :attribute_number AND
    grade_number     = :grade_number AND
    attribute_type   = :attribute_type
ORDER BY
    option_number

返回如下结果:

[0] => Array
                (
                    [com_ID] => 678
                    [option_number] => 1
                    [comment] => TODO primary function missing for controller y
                    [word_count] => 7
                    [gender] => 2
                    [sample] => 0
                    [version_count] => 73
                )

            [1] => Array
                (
                    [com_ID] => 679
                    [option_number] => 2
                    [comment] => TODO make this green
                    [word_count] => 4
                    [gender] => 2
                    [sample] => 0
                    [version_count] => 73
                )

            [2] => Array
                (
                    [com_ID] => 680
                    [option_number] => 3
                    [comment] => TODO make this better
                    [word_count] => 4
                    [gender] => 2
                    [sample] => 0
                    [version_count] => 73
                )

1 个答案:

答案 0 :(得分:2)

至少有一个问题是你的子查询。它没有相关性。我想你的意思是:

(SELECT count(a_ID)
 FROM matrix_mct_versions
 WHERE matrix_mct_versions.com_ID = matrix_mct.com_ID
) as version_count