0

我有两个表,它们是数据源,说 A,B。我想从这些表中获取 4 列的数据。两个表中都存在 4 列。“A”表可能有也可能没有 4 列或所有 4 列的值。但可以肯定的是,B 表具有所有这些值。因此,如果它存在于 A 中,我必须从中选择,否则我必须从 B 中选择。假设 Col1、Col2 存在于 A 中,而 col3 和 col4 不在 A 表中,那么它应该从 A 和 col 中获取 col1、col2 3、来自B表的col4。

我不擅长 SQL。有人可以帮我弄这个吗?希望我的问题很清楚。如果没有请告诉我

4

3 回答 3

3

您可以使用LEFT OUTER JOIN在 A 中查找匹配项(如果存在)。如果匹配行不存在,则 B 中的行仍将保留在查询中。如果 A 的某一列具有 NULL 值,则 COALESCE() 可用于回退 B 对该列的值。

从您的问题中我不清楚您想使用哪些标准来匹配 A 和 B 之间的行,但是如果您填写该详细信息,也许像下面这样的查询会有所帮助。

SELECT COALESCE(A.col1,B.col1)
        , COALESCE(A.col2,B.col2)
        , COALESCE(A.col3,B.col3)
        , COALESCE(A.col4,B.col4)
FROM B
LEFT OUTER JOIN A
    ON A.id = B.id
于 2012-08-09T09:41:33.627 回答
1

您可以在没有表之间关系的情况下进行连接。下面的示例显示了我认为您的目标。

DECLARE @tableone TABLE(id int,FirstName varchar(50),Secondname varchar(50))
insert into @tableone values(1,null, null);
insert into @tableone values(2,null, 'Dev');
insert into @tableone values(3,'Arjun', null);
insert into @tableone values(4,'Jack', 'Bilalo');

DECLARE @tabletwo TABLE(id int,FirstName varchar(50),Secondname varchar(50))
insert into @tabletwo values(1,'John', 'cena');
insert into @tabletwo values(2,'Michel', 'Dev');
insert into @tabletwo values(3,'Arjun', 'Ramn');
insert into @tabletwo values(4,'Jack', 'Bilalo');

SELECT A.Id, COALESCE(A.FirstName,B.FirstName) As Firstname, COALESCE(A.Secondname,B.Secondname) As Secondname
FROM @tableone A
    JOIN @tabletwo B
        ON A.id = B.id
于 2012-08-09T10:15:39.217 回答
0

现场演示

http://sqlfiddle.com/#!3/dbcfe/1

示例代码

create table tableone(id int,FirstName varchar(50),Secondname varchar(50))
insert into tableone values(1,'John', 'cena');
insert into tableone values(2,'Michel', 'Dev');
insert into tableone values(3,'Arjun', 'Ramn');
insert into tableone values(4,'Jack', 'Bilalo');

create table tabletwo(id_tb1 int,"address" varchar(150))
insert into tabletwo values('1','Uk');
insert into tabletwo values('2','USA');
insert into tabletwo values('3','China');
insert into tabletwo values('4','India');

select a.FirstName,a.SecondName,b.address as location 
from tableone a inner join tabletwo b
on a.id=b.id_tb1 
于 2012-08-09T09:52:42.133 回答