首页 > 解决方案 > SQL (MySQL) - 如何在内部联接中使用嵌套查询中的指定名称

问题描述

SELECT name, age
FROM (SELECT name, age / 2
      FROM maintable
      INNER JOIN ......
      ) AS C
INNER JOIN (SELECT (Max(sales), person
            FROM C) AS D ON .....

我正在尝试编写与上述类似的查询,但是当我在内部连接部分引用 C 时,它说它不存在。我如何参考它?

标签: mysqlsql

解决方案


你不能这样做,你只能在子查询中使用子查询。

SELECT name, age
FROM 
(
      SELECT name, age / 2
      FROM maintable
      INNER JOIN ......
) AS C
INNER JOIN
(
    SELECT Max(sales), person
    FROM
    (
      SELECT name, age / 2
      FROM maintable
      INNER JOIN ......
    ) AS C
) AS D ON ....

如果你的mysql版本支持CTE

WITH C AS ( 
      SELECT name, age / 2
      FROM maintable
      INNER JOIN ......
    )
SELECT name, age
FROM C JOIN 
(
    SELECT Max(sales), person
    FROM C
) AS D ON ....

推荐阅读