Sql Union 2表和基于数据源的设置值

Sql Union 2表和基于数据源的设置值,sql,set,union,Sql,Set,Union,试图解决这个问题 我需要一个查询,将合并成1,我下面有两个表 select PersonId, PersonFirstName, PersonLastName from dbo.Person UNION SELECT AdminId as PersonsId, AdminFirstName as PersonsFirstName, AdminLastName as PersonsLastName from dbo.UserAdmins 我想创建一个新列,并根据记录的来源为“Per

试图解决这个问题

我需要一个查询,将合并成1,我下面有两个表

select PersonId, PersonFirstName, PersonLastName
from dbo.Person
UNION 
SELECT AdminId as PersonsId, AdminFirstName as PersonsFirstName, AdminLastName as       PersonsLastName
from dbo.UserAdmins
我想创建一个新列,并根据记录的来源为“Person”或“Admin”赋值。因此,如果记录1-10来自dbo.Person,则新列将作为“Person”填写,如果下一个记录5来自Admin,则新列将作为“Admin”填写


这似乎相对简单,但不确定从哪里开始

您只需添加一个具有所需值的新列:

select PersonId
    , PersonFirstName
    , PersonLastName
    , 'Person' as yourColName
from dbo.Person
UNION ALL
SELECT AdminId as PersonsId
    , AdminFirstName as PersonsFirstName
    , AdminLastName as       PersonsLastName
    , 'Admin' as yourColName
from dbo.UserAdmins

您只需添加一个具有所需值的新列:

select PersonId
    , PersonFirstName
    , PersonLastName
    , 'Person' as yourColName
from dbo.Person
UNION ALL
SELECT AdminId as PersonsId
    , AdminFirstName as PersonsFirstName
    , AdminLastName as       PersonsLastName
    , 'Admin' as yourColName
from dbo.UserAdmins

+1,尽管你真的应该让它成为
UNION ALL
而不是
UNION
。由于源标识符文字的缘故,
UNION
中每个子查询中的行是不同的:简单的
UNION
必须对结果排序并对其进行重复数据消除,而不产生任何效果。使用
UNION ALL
可以消除额外的开销。谢谢。我没有意识到它这么简单。+1,尽管你真的应该让它成为
UNION ALL
而不是
UNION
。由于源标识符文字的缘故,
UNION
中每个子查询中的行是不同的:简单的
UNION
必须对结果排序并对其进行重复数据消除,而不产生任何效果。使用
UNION ALL
可以消除额外的开销。谢谢。我没意识到事情这么简单。