-1
我有一個表,我需要更新到Y的值,但此更新是基於其他表的一些結果,我不知道如何做到這一點。SQL Server更新與複雜的邏輯
基本上,我需要完成下列檢查
- 我需要從我需要更新該表以檢查其他表具有正好19匹配的行
- 在這些匹配的行的一個字段不爲空
- 我有兩個其他表,我需要檢查後面的表中存在的記錄,以確保後者中的匹配記錄在其中一個字段中不包含「Y」的值。
我的這種方法是使用工會,但我想一個人幫我,這種做法是否正確,或者是否有這樣做的更好的方法:我認爲
SELECT '1'
FROM t_A_Outbound
Where NOT HEADER IN (Select HEADER FROM t_B_Outbound)
UNION
SELECT '1'
FROM t_A_Outbound
Where HEADER IN (Select HEADER FROM t_B_Outbound
WHERE NOT INCOMPLETE ='Y')
UNION
Select '1'
From t_C_Outbound
Where ValueString = ''
UNION
Select '1'
From t_C_Outbound
WHERE Exists(Select Count(key), HEADER
From t_C_Outbound IN (SELECT HEADER FROM table_that_needs_updating)
Group By HEADER
Having NOT Count(Cast(key as Int)) = 19)
用1作爲標誌來說明這個值是否回來更新我需要改變的表中的字段。
任何人都可以告訴我嗎?
你能告訴我們你想要的'update'語句嗎?我在想,你可以使用'from'和'where'子句來做你需要的一切來驗證數據。 – HABO 2012-07-11 18:50:54
我沒有寫出實際的更新聲明,但我正在查看我正在做的方法是否正確。所以,這是我正在尋找的建議 – Andy5 2012-07-11 19:01:18
您正在製作相當多的包含數字「1」的字符串。我不確定這有什麼幫助。因爲如果所有的驗證都成功了,你就無法傳達你要更新的內容,除了建議使用'join'中的'if'或'update'外,我不能做更多的事情。 – HABO 2012-07-11 19:16:33