查询SQL查询中的不同记录

查询SQL查询中的不同记录,sql,sql-server,sql-server-2012,subquery,Sql,Sql Server,Sql Server 2012,Subquery,我有一个SQL查询,它连接了3个表,并从中提取了总共3列。我试图弄清楚如何查询该查询以仅从其中一列中获取不同的记录。这是我到目前为止所拥有的 Select Distinct Make.NAME From ( Select MakeModel.MAKE_ID, Make.NAME, Vehicle.MODEL_YR From NagsInfo.dbo.Make

我有一个SQL查询,它连接了3个表,并从中提取了总共3列。我试图弄清楚如何查询该查询以仅从其中一列中获取不同的记录。这是我到目前为止所拥有的

Select Distinct Make.NAME
                From
            (
                Select MakeModel.MAKE_ID, Make.NAME, Vehicle.MODEL_YR
                From NagsInfo.dbo.Make
                INNER JOIN NagsInfo.dbo.MakeModel
                    on Make.MAKE_ID = MakeModel.MAKE_ID
                INNER JOIN NagsInfo.dbo.Vehicle
                    on MakeModel.MAKE_MODEL_ID = Vehicle.MAKE_MODEL_ID
                Where Vehicle.MODEL_YR = @YEAR
            )

我不断收到多个不同的语法错误,我相信最近的一个告诉我括号是不正确的,但无论我在哪里查找,它们都是子查询所必需的

为什么要使用子查询?为什么不干脆做:

SELECT DISTINCT M.NAME
FROM NagsInfo.dbo.Make M
JOIN NagsInfo.dbo.MakeModel MM ON M.MAKE_ID = MM.MAKE_ID
JOIN NagsInfo.dbo.Vehicle V ON MM.MAKE_MODEL_ID = V.MAKE_MODEL_ID
WHERE V.MODEL_YR = @YEAR

为什么要使用子查询呢?为什么不干脆做:

SELECT DISTINCT M.NAME
FROM NagsInfo.dbo.Make M
JOIN NagsInfo.dbo.MakeModel MM ON M.MAKE_ID = MM.MAKE_ID
JOIN NagsInfo.dbo.Vehicle V ON MM.MAKE_MODEL_ID = V.MAKE_MODEL_ID
WHERE V.MODEL_YR = @YEAR

为什么要使用子查询呢?为什么不干脆做:

SELECT DISTINCT M.NAME
FROM NagsInfo.dbo.Make M
JOIN NagsInfo.dbo.MakeModel MM ON M.MAKE_ID = MM.MAKE_ID
JOIN NagsInfo.dbo.Vehicle V ON MM.MAKE_MODEL_ID = V.MAKE_MODEL_ID
WHERE V.MODEL_YR = @YEAR

为什么要使用子查询呢?为什么不干脆做:

SELECT DISTINCT M.NAME
FROM NagsInfo.dbo.Make M
JOIN NagsInfo.dbo.MakeModel MM ON M.MAKE_ID = MM.MAKE_ID
JOIN NagsInfo.dbo.Vehicle V ON MM.MAKE_MODEL_ID = V.MAKE_MODEL_ID
WHERE V.MODEL_YR = @YEAR


必须将派生表(如
)别名为Make
。除此之外,,您只需选择一列并在此列上应用
DISTINCT
从NagsInfo.dbo中选择DISTINCT Make.NAME。使内部连接NagsInfo.dbo.MakeModel on Make.Make_ID=MakeModel.Make_ID内部连接NagsInfo.dbo.Vehicle onMakeModel.MAKE_MODEL_ID=Vehicle.MAKE_MODEL_ID Where Vehicle.MODEL_YR=@YEAR
非常感谢。我找的任何地方似乎都不想给我那一点点信息。@GiorgosBetsos-
DISTINCT
应用于整个
SELECT
集合,或者行(如果您愿意),而不是特定列。@Amit我同意您的看法。这就是我在评论中要说的。您必须将派生表别名为Make,如
)。除此之外,,您只需选择一列并在此列上应用
DISTINCT
从NagsInfo.dbo中选择DISTINCT Make.NAME。使内部连接NagsInfo.dbo.MakeModel on Make.Make_ID=MakeModel.Make_ID内部连接NagsInfo.dbo.Vehicle onMakeModel.MAKE_MODEL_ID=Vehicle.MAKE_MODEL_ID Where Vehicle.MODEL_YR=@YEAR
非常感谢。我找的任何地方似乎都不想给我那一点点信息。@GiorgosBetsos-
DISTINCT
应用于整个
SELECT
集合,或者行(如果您愿意),而不是特定列。@Amit我同意您的看法。这就是我在评论中要说的。您必须将派生表别名为Make
,如
)。除此之外,,您只需选择一列并在此列上应用
DISTINCT
从NagsInfo.dbo中选择DISTINCT Make.NAME。使内部连接NagsInfo.dbo.MakeModel on Make.Make_ID=MakeModel.Make_ID内部连接NagsInfo.dbo.Vehicle onMakeModel.MAKE_MODEL_ID=Vehicle.MAKE_MODEL_ID Where Vehicle.MODEL_YR=@YEAR
非常感谢。我找的任何地方似乎都不想给我那一点点信息。@GiorgosBetsos-
DISTINCT
应用于整个
SELECT
集合,或者行(如果您愿意),而不是特定列。@Amit我同意您的看法。这就是我在评论中要说的。您必须将派生表别名为Make
,如
)。除此之外,,您只需选择一列并在此列上应用
DISTINCT
从NagsInfo.dbo中选择DISTINCT Make.NAME。使内部连接NagsInfo.dbo.MakeModel on Make.Make_ID=MakeModel.Make_ID内部连接NagsInfo.dbo.Vehicle onMakeModel.MAKE_MODEL_ID=Vehicle.MAKE_MODEL_ID Where Vehicle.MODEL_YR=@YEAR
非常感谢。我找的任何地方似乎都不想给我那一点点信息。@GiorgosBetsos-
DISTINCT
应用于整个
SELECT
集合,或者行(如果您愿意),而不是特定列。@Amit我同意您的看法。这就是我在评论中想说的。好吧,出于某种原因,我在脑海里认为这样做是不可能的,但看到这一点,我现在意识到我之前得出的结论是非常错误的。谢谢你的帮助。好吧,出于某种原因,我在我的脑海里有这样做是不可能的,但看到这一点,我现在意识到我之前得出的结论是非常错误的。谢谢你的帮助。好吧,出于某种原因,我在我的脑海里有这样做是不可能的,但看到这一点,我现在意识到我之前得出的结论是非常错误的。谢谢你的帮助。好吧,出于某种原因,我在我的脑海里有这样做是不可能的,但看到这一点,我现在意识到我之前得出的结论是非常错误的。谢谢你的帮助。