我有两张桌子。每个都有列数。但两者都有两个共同的列(即:SiteCode,companyId)
我尝试对两个公共列进行左连接以创建视图。
CREATE VIEW [dbo].[vwAlarmActionSummaryYFUserSite]
AS
SELECT *
FROM [dbo].[vwAlarmActionSummary] alarmaction
LEFT JOIN [dbo].[vwYfUserToSiteMappings] usersite on alarmaction.SiteCode = usersite.SiteCode
and alarmaction.CompanyId = usersite.CompanyId
但我得到了
Column names in each view or function must be unique. Column name 'SiteCode'on 'vwAlarmActionSummaryYFUserSite' is specified more than once.
我该如何避免这种情况? 我的要求是根据上述两个条件从这两个表中获取所有列
答案 0 :(得分:1)
一般来说,在定义视图中使用*是非常糟糕的做法。无法从其中一个连接表中专门排除列。但是,您可以对一个表使用*(所有列),同时为另一个表提供显式列名,如下所示:
CREATE VIEW [dbo].[vwAlarmActionSummaryYFUserSite]
AS
SELECT
alarmaction.[column name],
...
usersite.*
FROM [dbo].[vwAlarmActionSummary] alarmaction
LEFT JOIN [dbo].[vwYfUserToSiteMappings] usersite on
alarmaction.SiteCode = usersite.SiteCode
and alarmaction.CompanyId = usersite.CompanyId
最佳做法仍然是明确列出两个表中的所有列,并且只包含一次“SiteCode”。
答案 1 :(得分:0)
不要选择*
。选择你的专栏名称。