0

我试图了解嵌套在 SQL Server 中的工作原理,并生成了以下代码......

SELECT(*)
FROM
(
    SELECT (*)
    FROM MPOG_Institutions JOIN AIMS_Patients 
    ON MPOG_Institutions.MPOG_Institution_ID = AIMS_Patients.MPOG_Institution_ID
) AS a

我目前的理解是,内部 SELECT、FROM 和 JOIN 语句会生成一个结果集,然后在外部 SELECT 语句的 FROM 语句中使用该结果集。但是,当运行此代码时,我收到以下语法错误:

Msg 8156, Level 16, State 1, Line 1
The column 'MPOG_Institution_ID' was specified multiple times for 'a'.

我读过这些嵌套的结果集需要别名,因此需要“AS a”,但随后会发生此错误。谁能帮我理解这里发生了什么?

谢谢!

4

1 回答 1

5

这是因为MPOG_Institution_IDis 在两个表中,并且通过SELECT *在最外面的查询中执行,您选择了该列两次。由于您没有子查询中任何列的别名,SQL 不知道如何处理两个名称相同的列,因此会出现错误。

而不是做SELECT *,你应该专门调出每一列,在的情况下MPOG_Institution_ID,只选择一次。

于 2013-05-23T14:00:27.223 回答