如何外连接两个表?

时间:2014-06-27 20:56:52

标签: sql-server join

我有以下表格: tblA(id,price),tblB(id,minPay) 例如:

tblA
id        price
001       1.00
003       2.00

tblB
id        minPay
001       10.00
004       20.00

我需要以某种方式加入这两个表来获得以下结果:

id        price       minPay
001       1.00        10.00
003       2.00        0
004       0           20.00

有谁知道如何实现这个目标?

5 个答案:

答案 0 :(得分:2)

使用COALESCE()将NULL替换为ZERO值

SELECT a.id, coalesce(a.price,0) AS Price, coalesce(b.minpay,0) as Minipay
FROM tblA a FULL OUTER JOIN tblB b 
ON a.id=b.id 

答案 1 :(得分:1)

我认为您正在寻找完整的外部联接。 http://www.w3schools.com/sql/sql_join_full.asp

SELECT tblA.id, tblA.price, tblB.minPay
FROM tblA
FULL OUTER JOIN tblB
ON tblA.id=tblB.id

答案 2 :(得分:0)

此查询应该为您提供预期的结果。

select tblA.id, price, minpay from tblA full outer join tblB on tblA-id=tblb.id 

答案 3 :(得分:0)

一个FULL OUTER JOIN会完成这个,但我会假设你有一个主表,你可以从包含所有记录开始,然后你真的更好的开始,然后做{{1 }}秒。例如,假设您有一个LEFT JOIN表,其中包含所有ID(并假设它们是1-1关系而不是1-many),那么:

Items

答案 4 :(得分:0)

检查此查询

declare @tblA table (id varchar(50), price varchar(50))
insert into @tblA values ('001' ,'1.00'),('003','2.00')

declare @tblB table (id       int, minPay varchar(50))
insert into @tblB values ('001' ,'10.00'),('004','20.00')

select 
  case when b.id IS null then a.id else b.id end id , 
  case when b.minPay IS null then a.price else '0' end price, 
  isnull(minpay , 0) minpay
from @tblA a 
  full outer join @tblB b 
on A.id = b.id