使用符合的使用者名稱在 SQL 表之間有效傳輸資料
您的資料庫包含兩個表,table_a
和 table_b
,每個表都有一個 user_name
欄位。 目標是將資料從 column_b_1
中的 column_b_2
和 table_b
分別複製到 column_a_1
中的 column_a_2
和 table_a
,根據相同的 user_name
值匹配行。
假設適當的索引已就位以獲得最佳效能,單一 SQL 語句即可完成此操作:
<code class="language-sql">UPDATE table_a SET column_a_1 = (SELECT b.column_b_1 FROM table_b b WHERE b.user_name = table_a.user_name), column_a_2 = (SELECT b.column_b_2 FROM table_b b WHERE b.user_name = table_a.user_name) WHERE EXISTS (SELECT 1 FROM table_b b WHERE b.user_name = table_a.user_name);</code>
此查詢使用相關子查詢從 table_b
中為 table_a
中的每一行取得正確的值。 EXISTS
子查詢確保僅對兩個表中都存在的使用者名稱進行更新。
對於效能至關重要的大型資料集,請考慮以下替代策略:
JOIN
建立臨時表來組合 table_a
和 table_b
中的相關行。 table_a
中刪除現有資料。 table_a
。 雖然此方法涉及更多步驟,但它通常可以透過廣泛的資料集提供卓越的效能。
以上是如何根據匹配的使用者名稱在SQL表之間有效率地複製資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!