[英]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.