由于列名不明确,sql 查询出错
error with a sql query because of ambiguous column name
我正在尝试创建 sql 查询,但出现以下错误:
Ambiguous column name 'description'.
因为这列在两个表中都出现了
如果我从查询中删除描述,它就会起作用。
我尝试重命名描述字段 "AS description_pointer",但错误仍然存在。
SELECT TOP 1000 [activityid]
,[activitytypecodename]
,[subject]
,[regardingobjectid]
,[contactid]
,[new_crmid]
,[description] AS description_pointer
FROM [crmtestext_MSCRM].[dbo].[FilteredActivityPointer] as I
Left JOIN [crmtestext_MSCRM].[dbo].[FilteredContact]
ON I.[regardingobjectid] = [crmtestext_MSCRM].[dbo].[FilteredContact].[contactid]
WHERE new_crmid not like '%Null%' AND activitytypecodename like '%E-mail%'
在查询中发挥作用的两个 table 都有一个名为 description
的列。您的 RDBMS 无法猜测您真正想要的是哪一列 table。
您需要在列名称前加上 table 名称(或 table 别名)以消除歧义。
最重要的是,总是 在多个 table 出现时使用 table 名称或别名作为列名称前缀是一个好习惯在查询中。这避免了您在这里看到的问题,并使不了解底层架构的可怜人更容易理解查询。
这是您的查询的更新版本,其中包含 table 别名和列前缀。显然,您需要查看每一列以输入正确的别名:
SELECT TOP 1000
i.[activityid]
,i.[activitytypecodename]
,i.[subject]
,c.[regardingobjectid]
,c.[contactid]
,c.[new_crmid]
,c.[description] AS description_pointer
FROM [crmtestext_MSCRM].[dbo].[FilteredActivityPointer] as i
Left JOIN [crmtestext_MSCRM].[dbo].[FilteredContact] as c
ON i.[regardingobjectid] = c.[contactid]
WHERE i.new_crmid not like '%Null%' AND i.activitytypecodename like '%E-mail%'
我正在尝试创建 sql 查询,但出现以下错误:
Ambiguous column name 'description'.
因为这列在两个表中都出现了
如果我从查询中删除描述,它就会起作用。 我尝试重命名描述字段 "AS description_pointer",但错误仍然存在。
SELECT TOP 1000 [activityid]
,[activitytypecodename]
,[subject]
,[regardingobjectid]
,[contactid]
,[new_crmid]
,[description] AS description_pointer
FROM [crmtestext_MSCRM].[dbo].[FilteredActivityPointer] as I
Left JOIN [crmtestext_MSCRM].[dbo].[FilteredContact]
ON I.[regardingobjectid] = [crmtestext_MSCRM].[dbo].[FilteredContact].[contactid]
WHERE new_crmid not like '%Null%' AND activitytypecodename like '%E-mail%'
在查询中发挥作用的两个 table 都有一个名为 description
的列。您的 RDBMS 无法猜测您真正想要的是哪一列 table。
您需要在列名称前加上 table 名称(或 table 别名)以消除歧义。
最重要的是,总是 在多个 table 出现时使用 table 名称或别名作为列名称前缀是一个好习惯在查询中。这避免了您在这里看到的问题,并使不了解底层架构的可怜人更容易理解查询。
这是您的查询的更新版本,其中包含 table 别名和列前缀。显然,您需要查看每一列以输入正确的别名:
SELECT TOP 1000
i.[activityid]
,i.[activitytypecodename]
,i.[subject]
,c.[regardingobjectid]
,c.[contactid]
,c.[new_crmid]
,c.[description] AS description_pointer
FROM [crmtestext_MSCRM].[dbo].[FilteredActivityPointer] as i
Left JOIN [crmtestext_MSCRM].[dbo].[FilteredContact] as c
ON i.[regardingobjectid] = c.[contactid]
WHERE i.new_crmid not like '%Null%' AND i.activitytypecodename like '%E-mail%'