我正在尝试创建一个SQL查询,但是出现此错误:
列名“ 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%'
答案 0 :(得分:0)
在查询中起作用的两个表都有一个名为description
的列。您的RDBMS无法猜测您真正想要的列表。
您需要在列名前添加表名(或表别名)以消除歧义。
最重要的是,在查询中使用多个表时,最好始终使用表名或别名为列名加前缀 。这样可以避免您在这里看到的问题,并使那些不了解基础架构的可怜人更容易理解查询。
这是查询的更新版本,其中包含表别名和列前缀。显然,您需要检查每列以放置正确的别名:
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%'