查询SQL查询中的不同记录
我有一个SQL查询,它连接了3个表,并从中提取了总共3列。我试图弄清楚如何查询该查询以仅从其中一列中获取不同的记录。这是我到目前为止所拥有的查询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
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我同意您的看法。这就是我在评论中想说的。好吧,出于某种原因,我在脑海里认为这样做是不可能的,但看到这一点,我现在意识到我之前得出的结论是非常错误的。谢谢你的帮助。好吧,出于某种原因,我在我的脑海里有这样做是不可能的,但看到这一点,我现在意识到我之前得出的结论是非常错误的。谢谢你的帮助。好吧,出于某种原因,我在我的脑海里有这样做是不可能的,但看到这一点,我现在意识到我之前得出的结论是非常错误的。谢谢你的帮助。好吧,出于某种原因,我在我的脑海里有这样做是不可能的,但看到这一点,我现在意识到我之前得出的结论是非常错误的。谢谢你的帮助。