左边连接时如何避免重复列?

时间:2017-08-22 02:12:36

标签: mysql sql

我有两张桌子。每个都有列数。但两者都有两个共同的列(即: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.

我该如何避免这种情况? 我的要求是根据上述两个条件从这两个表中获取所有列

2 个答案:

答案 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)

不要选择*。选择你的专栏名称。