2015-06-23 48 views
1

有兩個表ps_customer和ps_address。選擇無地址的客戶

ps_customer contains: id_customer and customer.email 
ps_address contains: id_customer and few other fields. 

我想選擇數據不在ps_address表中的客戶。 我使用SQL查詢:

SELECT id_customer, customer.email FROM ps_customer 
WHERE id_customer NOT IN SELECT id_customer FROM ps_address; 

但它拋出,有什麼不對的查詢SELECT id_customer FROM ps_address

回答

0

你需要把括號圓你查詢的最後一部分,以表明它是一個子查詢的錯誤:

SELECT id_customer, customer.email FROM ps_customer 
WHERE id_customer NOT IN (SELECT id_customer FROM ps_address); 
0

您可以使用左側加入了這個東西作爲

select 
c.id_customer, 
c.customer.email 
from ps_customer c 
left join ps_address a on a.id_customer = c.id_customer 
where a.id_customer is null 
0

您可以嘗試使用左加入

SELECT id_customer, customer.email FROM ps_customer pc left join ps_address pa 
on pc.id_customer = pa.id_customer 
where pa.id_customer is null; 
0

您可以使用左連接它:

SELECT id_customer, customer.email 
FROM ps_customer 
    left join ps_address on ps_customer.id_customer= ps_address.id_customer 
where ps_address.id_customer is null; 

,或者如果你想使用子查詢,你必須使用()約於子查詢:

SELECT id_customer, customer.email FROM ps_customer 
WHERE id_customer NOT IN (SELECT id_customer FROM ps_address); 
1

您需要在這兩個表上有一個LEFT OUTER JOIN。

SELECT PSC.id_customer, PSCcustomer.email 
FROM ps_customer PSC 
LEFT OUTER JOIN ps_address PSA on PSC.id_customer = PSA.id_customer 
WHERE PSA.id_customer IS NULL