1
我有以下查詢。從UPDATE刪除重複代碼
UPDATE A SET b = (SELECT b FROM B WHERE A.a_id = B.a_id AND B.value = ?)
如果B中value =?不存在a_id,則可以用NULL填充A值。但是這沒關係,因爲在執行這個查詢之前,A.b肯定只包含NULL值。
不過,我需要更新的列數,以反映執行更新的數量。所以我把它改成:
UPDATE A SET b = (SELECT b FROM B WHERE A.a_id = B.a_id AND B.value = ?)
WHERE EXISTS (SELECT b FROM B WHERE A.a_id = B.a_id AND B.value = ?)
我不喜歡這個解決方案,因爲現在我有重複的代碼,必須多次填充參數。當where子句變得更復雜時,這變得更加醜陋。
有沒有擺脫這種重複代碼的方法嗎?
(順便說一句,我對甲骨文10,但我更喜歡DB獨立的解決方案)使用
查找到'MERGE'聲明。 –