加入两个表,忽略第一个表中的记录(如果存在于第二个表中)

问题描述:

如何连接到表,如果我更喜欢只从第二个表中获取记录?如果不存在第二个表,请记录第一个表。加入两个表,忽略第一个表中的记录(如果存在于第二个表中)

Table A   Table B   Result 
pid,name,type pid,name,type pid,name,type 
1,Anna,null  1,Anna,100  "1,Anna,100" 
2,Bea,null  -    "2,Bea,Null" 
3,Caro,null  3,Caro,100  "3,Caro,100"  
       3,Caro,200  "3,Caro,200" 

编辑:我试图改进我的示例表。

+1

这绝不是你想知道的。你的A和B的列是什么?在你的例子中,来自A的记录在什么意义上被忽略? –

+0

你会在表A中使用Caro,而在tableB中没有行吗? – gbn

+0

人员既可以是小组的成员,也可以是小组的成员。他们可能在一个组中拥有多个成员资格。现在,我需要一个与组关联的所有人的列表。但是,如果该人拥有多个成员资格,则同一个人只有多个。 –

SELECT 
    ISNULL(A.column1, B.column1), --perhaps name 
    ISNULL(A.column2, B.column2) --perhaps id 
FROM 
    TableA A 
    FULL OUTER JOIN 
    TableB B ON A.column1 = B.column1 --assume name is matching column 

编辑,我假设你有没有排TableA中,和 “戴维,6” TableB中。否则,Cyber​​nate的左连接已经足够了

+0

不是很激动我需要什么,但是你把我放在正确的道路上。谢谢! –

你可以使用左连接,我假设TableB的列名分别是Name和ID。

SELECT tableA.Name, tableB.Id 
    FROM tableA LEFT JOIN tableB 
    ON tableA.Name = tableB.Name