2017-02-27 34 views
1

這是我到目前爲止有:我想如果B表的元組的主鍵不存在的元組插入元組到表A(表B)

INSERT INTO Tenants (LeaseStartDate, LeaseExpirationDate, Rent, LeaseTenantSSN, RentOverdue) 
SELECT CURRENT_DATE, NULL, NewRentPayments.Rent, NewRentPayments.LeaseTenantSSN, FALSE from NewRentPayments 
WHERE NOT EXISTS (SELECT * FROM Tenants, NewRentPayments WHERE NewRentPayments.HouseID = Tenants.HouseID AND 
NewRentPayments.ApartmentNumber = Tenants.ApartmentNumber) 

所以,HouseID和ApartmentNumber一起構成主鍵。如果表B(NewRentPayments)中存在基於主鍵的表A(租戶)中不存在的元組,則需要將其插入到租戶中。

問題是,當我運行我的查詢,它不會插入任何東西(我知道一個事實應該有1元組插入)。我不知所措,因爲它看起來應該起作用。

謝謝。

回答

1

您的子查詢不相關 - 它只是一個不相關的連接查詢。

根據你的問題描述,你不需要這個連接。

試試這個:

insert into Tenants (LeaseStartDate, LeaseExpirationDate, Rent, LeaseTenantSSN, RentOverdue) 
select current_date, null, p.Rent, p.LeaseTenantSSN, FALSE 
from NewRentPayments p 
where not exists (
     select * 
     from Tenants t 
     where p.HouseID = t.HouseID 
      and p.ApartmentNumber = t.ApartmentNumber 
     ) 
+0

此致工作,但究竟是什麼區別(除了清理一些符號的?)謝謝。 –

+0

我沒有子查詢中的NewRentPayments,這阻礙了相關性 – GurV

+0

哦,好吧,至少我很接近。再次感謝。 –

相關問題