2014-09-11 10 views
0

這裏是我的代碼在sql服務器更新在加入表的SQL服務器

我有一個錯誤,說:「多部分標識符」t2.isactive「無法綁定。

也,我要尋求幫助

UPDATE tb_active_priority_alert 
SET 
priority_alert_guid = t2.priority_alert_guid, 
priority_alert_title = t2.priority_alert_title, 
priority_alert_zone = t2.priority_alert_zone, 
priority_alert_color =t2.priority_alert_color, 
priority_alert_allow_cancel = t2.priority_alert_allow_cancel, 
priority_alert_time_duration = t2.priority_alert_time_duration, 
priority_alert_type = t2.priority_alert_type, 
priority_alert_text = t2.priority_alert_text, 
web_url =t2.web_url, 
video_url = t2.video_url, 
video_style = t2.video_style, 
banner_playlist_guid = t2.banner_playlist_guid, 
signage = t2.signage, 
signage_guid = t2.signage_guid, 
alert_icon = t2.alert_icon, 
isactive ='true', 
user_guid =t2.user_guid, 
creation_datetime = GETDATE(), 
expiration_datetime = dateadd(MINUTE,t2.priority_alert_time_duration,GETDATE()), 
t2.isactive='true' 
from tb_users_priority_alerts t2 left outer join tb_active_priority_alert t1 on t2.priority_alert_guid [email protected]_alert_guid 
WHERE t2.priority_alert_guid [email protected]_alert_guid; 
+0

在t2.priority_alert_guid = t1.thejoiningcolumn'上使用正確的JOIN條件' – Mihai 2014-09-11 12:31:40

+0

很難說出看到表格定義時發生了什麼。你可以發佈t1和t2的表格定義嗎?多部分標識符無法綁定錯誤基本上說,SQL無法在tb_active_priority_alert t1中找到該列處於活動狀態。這是過於簡單化了,但這是基本的想法。 – 2014-09-11 12:33:51

回答

1

你不能使它工作。
聲明:

t2.isactive='true' 

試圖更新的表是不是一個你的聲明的第一行中規定。
更新指令可以更新單個表/對象中的數據;你想要做的是一次更新2個不同的表中的數據,這是不支持的。
here你可以在SO上找到同樣的問題。
here你可以找到有關UPDATE的官方MS文檔;它沒有被明確地寫入,但是在每一個被更新項目的引用中,你都會發現一個單一的對象作爲目標,甚至在語法指南中也只有一個目標。

您可以在事務中使用2個獨立的更新語句。

+0

對不起,你是對的....謝謝 – nesreen 2014-09-11 13:14:38

0

爲此更新的一個命令,一個命令只

感謝你在你的加入與T1有一個錯誤。你必須在特定的id/value/whatever上加入這兩個表。

試試這個:

from tb_users_priority_alerts t2 
left join tb_active_priority_alert t1 on t2.priority_alert_guid = t1.priority_alert_guid 

代替t2.priority_alert_guid = @ priority_alert_guid

+0

我不能這樣做,因爲 t1將永久只有一列 這是不是在t2 所以我想更新t1沒有任何條件 – nesreen 2014-09-11 12:44:18

+0

那麼,爲什麼你會加入t1到select語句? – ssn 2014-09-11 13:05:27

0

在查詢您顯示isactive = '真',它拋出的錯誤,甚至我認爲isactive 列兩個表中和在這裏你不要提到tb_active_priority_alert.isactive,因此會給出錯誤。

而你又在下面提到t2.isactive ='true',所以在這裏不需要兩次isactive ='true'。