2017-03-21 104 views
0

我有以下SQL查詢(使用Postgre,pgAdmin3)返回錯誤:多行子查詢

update "Customers" 
set "PID"=(select PID 
from person 
left join "Customers" 
on "Customers"."Email"=person.Email 
where "Customers"."Email"!='' and "Customers"."Email" is not null) 

子查詢運行得很好,並返回匹配它發現在PID客戶電子郵件列表人桌。

我需要使用此列表中的PID來更新Customer表中的PID字段。

有什麼建議嗎?

+0

什麼數據類型是表客戶的列PID?你的查詢沒有意義。因爲您正在將結果列表寫入單個單元格。 – edi

+1

您想要使用客戶PID更新客戶PID?這似乎沒有多大意義。爲什麼你在外部加入客戶時,後來用'和「客戶解僱外部聯合記錄」。「電子郵件」不爲空「?這似乎也沒有意義。然後當你更新時,你可以用子查詢給你的每個記錄的PID填充。你說子查詢給你一個PID列表。所以你試圖用PID列表填充每個PID?可能不會。那麼你真正想要達到的是什麼? –

+0

你想要一個*標量子查詢*:一個產生**的子查詢恰好是一個值**。你的不是。 – wildplasser

回答

3

這不是從查詢完全清楚,但我認爲你正在尋找的東西是這樣的:

update "Customers" as c 
set "PID"=p.PID 
from person AS p 
where c."Email"=p.Email 
and c."Email"!='' and c."Email" is not null 
0

顯然你都是天才,然後讀心術。這是現貨,正是我想要的。

相關問題