Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
别名的MySQL范围_Mysql_Sql - Fatal编程技术网

别名的MySQL范围

别名的MySQL范围,mysql,sql,Mysql,Sql,我有以下代码: 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中,它抛出错误:where子句中的未知列“

我有以下代码:

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中,它抛出错误:
where子句中的未知列“g.Id”

替代的T-SQL代码在具有相同模式的MS SQL Server中运行良好

有人能解释一下问题是什么吗?

您可以将其重写为(一个嵌套级别):


我认为您不需要在外部查询中使用
左连接。也许你想要:

SELECT (SELECT COUNT(DISTINCT a.DtaId)
        FROM Tappt a
        WHERE g.Id = a.TapptGroupsId
       ) AS id
FROM TapptGroups ;
或:


MySQL只在一个层次上识别关联子句——Oracle是另一个具有此限制的数据库。您还可以通过在
FROM
子句中进行聚合来解决此问题。

您好,问题是:其中g.Id=a.taptgroupsid。你还没有定义g是什么。在你的情况下,点击a;仅定义了一个。我想提到的另一个想法是,表达式总是由内而外进行计算。这是一个数学原理。MySQL中的别名只能上升或下降一级。。您有两个级别(两个嵌套选择)。执行此操作,您将看到它没有列Id:“描述TapptGroup”@Xmoůcolumn@NesanMano“g”是在带有“JOIN”的行中定义的。问题是SQL是由ORM生成的。@VladislavTryhub命名查询,或者您可以尝试将方言设置为MySQL
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;