我有一個選擇語句,連接幾個表並獲取一些信息。我想用select中包含的信息來更新其中一個表(在select中找到)中的所有記錄。選擇如下所示:SQL - 如何批量更新給出了一個選擇的結果
SELECT account.id
document.id
FROM customer INNER JOIN account ON
(customer.firstname = account.firstname AND
customer.lastname = account.lastname AND
customer.phone = account.phone)
INNER JOIN document ON
customer.id = document.customerid
WHERE document.accountid IS NULL;
在英文中,文檔可以屬於客戶和帳戶。我正在查找與客戶記錄相匹配的帳戶記錄,而客戶記錄中的記錄與客戶相關,但不是帳戶。現在
,我可以手動辦理結果,並運行此:
UPDATE document
SET accountid = /*account.id*/
WHERE id = /*document.id*/;
該工程,我想,但有匹配我的查詢記錄像樣的數目,我想這樣做如果可以的話,在一個單一的聲明。
+1我寫了一個類似的解決方案,你買得更快! :) – 2010-06-04 19:03:12
有趣。我在一個測試數據集(實際的副本)中試了這個,它比原始查詢中的行產生了更多的更新。我將不得不更多地研究它。 – 2010-06-05 21:01:49
可能由於第一次加入。 – 2010-06-05 23:33:29