SQL 服务器:使用不明确的名称列加入
SQL Server: Join with ambiguous name columns
我在SQL服务器中有两个表(我删除了很多行,但应该不会影响结果):
[dbo].[订单]:
CaseId Gender
-----------------
698 Female
694 Male
676 Female
659 Male
[dbo].[Plimplan]:
OrderID CaseID InfoID
--------------------------------------------
33425999 698 BBBBBE
33425984 694 AAAAAS
33425984 694 DSSSAS
33425609 694 BBBBBA
33425270 676 AAAAAA
33424973 676 AAAAAD
33424716 676 SASSAS
33424704 676 AAAAAA
33424500 676 BBBBBE
33424340 659 AAAAAA
33424281 659 BBBBBD
我想获得以下一个:
[dbo].[Plimplan]:
OrderID CaseID InfoID Gender
----------------------------------------------------
33425984 694 AAAAAS Male
33425270 676 AAAAAA Female
33424340 659 AAAAAA Male
让我们忘记连接吧。我可以从 [dbo].[Order] 中删除不需要的行:
SELECT TOP (100) MAX (OrderID) AS [OrderID]
,MAX (CaseID) AS [CaseID]
,MAX (InfoID) AS [InfoID]
/*,[Gender]*/
FROM [dbo].[Plimplan] as Plimpl
/* INNER JOIN [dbo].[Order] as Ord
ON Plimpl.CaseID = Ord.CaseID */
WHERE [InfoID] NOT LIKE 'BBBBB%'
and CaseID < 700
and CaseID > 600
GROUP BY (CaseID)
order by CaseID desc
但是如果我删除评论以完成连接,我会收到此错误:
消息 209,级别 16,状态 1,第 3 行
不明确的列名称 'CaseID'。
使用别名。您收到的错误是由于联接中的两个 table 都有一个 CaseID
列。 SQL 服务器告诉您它无法确定 您正在尝试哪个 select。
SELECT TOP 100
MAX (Plimpl.OrderID) AS [OrderID]
MAX (Plimpl.CaseID) AS [CaseID]
MAX (Plimpl.InfoID) AS [InfoID]
FROM [dbo].[Plimplan] AS Plimpl
INNER JOIN [dbo].[Order] AS Ord
ON Plimpl.CaseID = Ord.CaseID
WHERE
Plimpl.[InfoID] NOT LIKE 'BBBBB%' AND
Plimpl.CaseID < 700 AND
Plimpl.CaseID > 600
GROUP BY
Plimpl.CaseID
ORDER BY
Plimpl.CaseID DESC;
您显然曾经 select 编辑 Order
table 中的 Gender
列,但是使用GROUP BY
.
您在取消注释 JOIN 语句时遇到错误,对吗?
使用别名
SELECT TOP (100) MAX (OrderID) AS [OrderID]
,MAX (CaseID) AS [CaseID]
,MAX (InfoID) AS [InfoID]
/*,[Gender]*/
FROM [dbo].[Plimplan] as Plimpl
INNER JOIN [dbo].[Order] as Ord
ON Plimpl.CaseID = Ord.CaseID
WHERE [InfoID] NOT LIKE 'BBBBB%'
and Plimpl.CaseID < 700
and Plimpl.CaseID > 600
GROUP BY Plimpl.CaseID
order by Plimpl.CaseID desc
我在SQL服务器中有两个表(我删除了很多行,但应该不会影响结果):
[dbo].[订单]:
CaseId Gender
-----------------
698 Female
694 Male
676 Female
659 Male
[dbo].[Plimplan]:
OrderID CaseID InfoID
--------------------------------------------
33425999 698 BBBBBE
33425984 694 AAAAAS
33425984 694 DSSSAS
33425609 694 BBBBBA
33425270 676 AAAAAA
33424973 676 AAAAAD
33424716 676 SASSAS
33424704 676 AAAAAA
33424500 676 BBBBBE
33424340 659 AAAAAA
33424281 659 BBBBBD
我想获得以下一个:
[dbo].[Plimplan]:
OrderID CaseID InfoID Gender
----------------------------------------------------
33425984 694 AAAAAS Male
33425270 676 AAAAAA Female
33424340 659 AAAAAA Male
让我们忘记连接吧。我可以从 [dbo].[Order] 中删除不需要的行:
SELECT TOP (100) MAX (OrderID) AS [OrderID]
,MAX (CaseID) AS [CaseID]
,MAX (InfoID) AS [InfoID]
/*,[Gender]*/
FROM [dbo].[Plimplan] as Plimpl
/* INNER JOIN [dbo].[Order] as Ord
ON Plimpl.CaseID = Ord.CaseID */
WHERE [InfoID] NOT LIKE 'BBBBB%'
and CaseID < 700
and CaseID > 600
GROUP BY (CaseID)
order by CaseID desc
但是如果我删除评论以完成连接,我会收到此错误:
消息 209,级别 16,状态 1,第 3 行 不明确的列名称 'CaseID'。
使用别名。您收到的错误是由于联接中的两个 table 都有一个 CaseID
列。 SQL 服务器告诉您它无法确定 您正在尝试哪个 select。
SELECT TOP 100
MAX (Plimpl.OrderID) AS [OrderID]
MAX (Plimpl.CaseID) AS [CaseID]
MAX (Plimpl.InfoID) AS [InfoID]
FROM [dbo].[Plimplan] AS Plimpl
INNER JOIN [dbo].[Order] AS Ord
ON Plimpl.CaseID = Ord.CaseID
WHERE
Plimpl.[InfoID] NOT LIKE 'BBBBB%' AND
Plimpl.CaseID < 700 AND
Plimpl.CaseID > 600
GROUP BY
Plimpl.CaseID
ORDER BY
Plimpl.CaseID DESC;
您显然曾经 select 编辑 Order
table 中的 Gender
列,但是使用GROUP BY
.
您在取消注释 JOIN 语句时遇到错误,对吗?
使用别名
SELECT TOP (100) MAX (OrderID) AS [OrderID]
,MAX (CaseID) AS [CaseID]
,MAX (InfoID) AS [InfoID]
/*,[Gender]*/
FROM [dbo].[Plimplan] as Plimpl
INNER JOIN [dbo].[Order] as Ord
ON Plimpl.CaseID = Ord.CaseID
WHERE [InfoID] NOT LIKE 'BBBBB%'
and Plimpl.CaseID < 700
and Plimpl.CaseID > 600
GROUP BY Plimpl.CaseID
order by Plimpl.CaseID desc