从两个表中返回一个表,其中一个或另一个存在条件

时间:2016-10-28 14:04:52

标签: sql sql-server

这有点奇怪,但我需要从两个具有给定唯一标识符的表中选择一个。让我们说表A看起来像:

ID CallNumber Caller

和表B看起来像:

ID CallNumber Caller

我有一个唯一的标识符,可以在任何一个中。我怎么能写一个select语句来返回这些列并显示表A或表B中的数据?到目前为止我想出的是:

SELECT 
coalesce(a.ID,t.id) as ID
,coalesce(a.CallNumber,t.CallNumber) as CallNumber
,coalesce(a.Caller,t.Caller) as Caller
FROM tableA a
right join  tableB b on b.ID = a.ID
where a.ID = '' or b.ID = ''

但如果ID存在于表A中,则仅返回唯一标识符。

1 个答案:

答案 0 :(得分:1)

如果它需要是一个查询,那么您可以查询两个表并混搭结果。您无需为加入表格或其他逻辑而烦恼。

select
    ID,
    CallNumber,
    Caller
from
    tableA
where
    ID = theID

union all -- adding 'all' avoids unnecessary sorting operation

select
    ID,
    CallNumber,
    Caller
from
    tableB
where
    ID = theID