gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:39:44 26 4
gpt4 key购买 nike

有谁知道为什么 CASE WHEN() 总是返回“Yes”,即使有一些数据记录(按 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

最佳答案

这可能是因为您的子查询未以任何方式链接到其父查询,因此您只选择将为您提供"is"的行。尝试将此行添加到子查询的 WHERE 子句中:

AND dr.RecordID = data_records.RecordID

并删除:

AND dr.RecordID = drga.RecordID

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

关于MySQL 在子查询中从另一个表获取列的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56868440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com