我有以下代码:
SELECT (
SELECT COUNT(*)
FROM (
SELECT DISTINCT a.DtaId
FROM Tappt a
WHERE g.Id = a.TapptGroupsId
) AS t0
) AS Id
FROM Tappt t
LEFT JOIN TapptGroups g ON t.TapptGroupsId = g.Id;
在MySQL中,它会抛出错误:Unknown column 'g.Id' in 'where clause'
替代T-SQL代码在具有相同架构的MS SQL Server中正常工作。
有人能解释一下是什么问题吗?
答案 0 :(得分:0)
您可以将其重写为(一个嵌套级别):
SELECT (
SELECT COUNT(DISTINCT a.DtaId)
FROM Tappt a
WHERE g.Id = a.TapptGroupsId
) AS Id
FROM Tappt t
LEFT JOIN TapptGroups g ON t.TapptGroupsId = g.Id;
答案 1 :(得分:0)
我认为您不需要外部查询中的LEFT JOIN
。也许你想要:
SELECT (SELECT COUNT(DISTINCT a.DtaId)
FROM Tappt a
WHERE g.Id = a.TapptGroupsId
) AS id
FROM TapptGroups ;
或者:
SELECT COUNT(DISTINCT t.dtaID)
FROM Tappt t LEFT JOIN
TapptGroups g
ON t.TapptGroupsId = g.Id
GROUP BY g.id;
MySQL只识别一级深度的相关子句 - Oracle是另一个具有此限制的数据库。您还可以通过在FROM
子句中进行聚合来解决此问题。