SQL Server嵌套选择(带JOIN)问题

Aus*_*ger 0 sql sql-server

我试图了解嵌套如何在SQL服务器中工作,并生成以下代码...

SELECT(*)
FROM
(
    SELECT (*)
    FROM MPOG_Institutions JOIN AIMS_Patients 
    ON MPOG_Institutions.MPOG_Institution_ID = AIMS_Patients.MPOG_Institution_ID
) AS a
Run Code Online (Sandbox Code Playgroud)

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

Msg 8156, Level 16, State 1, Line 1
The column 'MPOG_Institution_ID' was specified multiple times for 'a'.
Run Code Online (Sandbox Code Playgroud)

我已经读过这些嵌套的结果集需要别名,因此需要"AS a",但随后会出现此错误.任何人都可以帮我理解这里发生了什么?

谢谢!

Lit*_*les 5

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

SELECT *您应该专门调出每一列,而不是这样做,而MPOG_Institution_ID只选择它一次.