繁体   English   中英

MySQL从子查询中的另一个表中获取列的计数

[英]MySQL getting count of a column from another table in a sub-query

有谁知道为什么CASE WHEN()总是返回“是”,即使有一些数据记录(按RecordID)在data_records_ga表中没有条目?

我目前不知道为什么在外面使用SELECT * FROM (...) AS X ,但是我的问题是在内部SELECT data_records.RecordID, (...及其相关的子查询中。

对于没有满足子查询条件的记录,我希望在插入“已完成”字段中看到“否”。

    SELECT * FROM (
        SELECT
            data_records.RecordID,
            (
                CASE WHEN (
                    SELECT COUNT(drga.Comment) AS count
                    FROM `data_records_ga` drga
                    INNER JOIN `data_records` dr
                    ON dr.RecordID = drga.RecordID
                    WHERE drga.FieldName = 'GA_completed'
                    AND drga.Comment = 1
                    AND dr.RecordID = drga.RecordID
                    HAVING COUNT(drga.Comment) > 0
                ) > 0
                THEN 'Yes'
                ELSE 'No'
                END
            ) AS Completed,
        FROM `data_records`
        LEFT JOIN data_records_ga on data_records.RecordID = data_records_ga.RecordID
        GROUP BY RecordID ORDER BY RecordID
    ) AS X

这很可能是因为您的子查询未以任何方式链接到其父查询,因此您只选择了将获得“是”的行。 尝试将此行添加到子查询的WHERE子句中:

AND dr.RecordID = data_records.RecordID

并删除:

AND dr.RecordID = drga.RecordID

上一行是多余的,因为您已经在子查询中将表连接在一起。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM