【问题标题】:SQL Server 2005 how to use union syntax?SQL Server 2005 如何使用联合语法?
【发布时间】:2019-11-05 03:29:15
【问题描述】:

我有这个问题

select c.RequestedByEmployeeID 
from Company c with (NOLOCK)

这行得通,但是当我尝试这个时,它失败了

select 
    c.RequestedByEmployeeID as ResponsibleLawyerID

union

select 
    c.RequestedByEmployeeID as ResponsibleLawyerID
from
    Company c with (NOLOCK)
order by
    c.CompanyID

出现此错误:

消息 107,第 16 级,状态 2,第 44 行
列前缀“c”与查询中使用的表名或别名不匹配。

消息 107,第 16 级,状态 2,第 44 行
列前缀“c”与查询中使用的表名或别名不匹配。

我该如何解决?

谢谢

【问题讨论】:

  • 这不是一个有效的sql查询select c.RequestedByEmployeeID as ResponsibleLawyerID

标签: sql sql-server-2005


【解决方案1】:

只是不要使用别名并重复FROM 子句:

select c.CompanyId, c.RequestedByEmployeeID as ResponsibleLawyerID
from Company c
union
select c.CompanyId, c.RequestedByEmployeeID as ResponsibleLawyerID
from Company c
order by CompanyID;

请注意,您需要选择列。如果您不想选择列但想按它排序,那么一种解决方案是子查询。您的查询基本上是无意义的(选择同一列),因此添加公司似乎是合理的。

order by 指的是union 的结果,而不是特定的子查询。所以,别名是不合适的。

使用union 意味着您不希望重复,因此数据库会因删除它们而导致性能损失。如果您不在乎,请使用union all

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-01
    • 2012-10-03
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多