我有2個表'A'和'B'。兩者都有一個共同的列「名稱」,並通過「ID」列相互鏈接。表A中的'名稱'列是空的,而表B中的數據是我的。我的任務是將表B中該列中的所有數據填充到具有相應ID的表A中。通過另一個表中的列更新一個表中的列
我使用下面的查詢:
UPDATE A
SET A.name = (SELECT B.name from B WHERE A.id = B.id)
WHERE EXISTS
(SELECT B.name from B)
當我運行SQL開發人員的查詢,它只是凍結和我必須強制關閉它。任何人都可以告訴我查詢有什麼問題嗎?
我認爲你的意圖是從B中的對應名稱更新的名字,但你的存在並不代表這個意圖 - 它是用於在每個記錄真實的,如果有在B. –
至少一行您需要添加WHERE EXISTS「子句中的WHERE a.id = b.id',因爲它確實檢查'b'表中是否有行,而''表中是否存在該行的id'。並且不要選擇一列,選擇一個常數。如果兩個id列位於索引中,但「name」列不是(或位於不同的索引中),則意味着查詢只需訪問索引,而不是表格。 –
您需要將WHERE A.id = B.id'添加到exists()以將更新候選與實際數據相關聯。 –