首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# ADO.NET 實作多表 UNION 查詢結果插入第三張表

     編輯:程式設計綜合問答

需求:將 Phone1、Phone2 兩表資料合併(去重)寫入 Phone3。前提是三表結構完全一致(欄位名、型別、順序)。

核心 SQL 語句

INSERT INTO Phone3
SELECT * FROM Phone1
UNION
SELECT * FROM Phone2;

UNION 會自動去除重複列;若需保留重複請用 UNION ALL。

C# 完整執行範例

using System;
using System.Data.SqlClient;

public class DataMerger
{
    public void MergePhones()
    {
        string connStr = "Server=.;Database=TestDB;Integrated Security=True;";
        string sql = @"
            INSERT INTO Phone3 (Col1, Col2, Col3) -- 建議明確列出欄位
            SELECT Col1, Col2, Col3 FROM Phone1
            UNION
            SELECT Col1, Col2, Col3 FROM Phone2;";

        using (SqlConnection conn = new SqlConnection(connStr))
        using (SqlCommand cmd = new SqlCommand(sql, conn))
        {
            conn.Open();
            int rows = cmd.ExecuteNonQuery();
            Console.WriteLine($"成功合併 {rows} 筆資料。");
        }
    }
}

最佳實務建議

  • 明確列出欄位:避免 SELECT * 導致結構變更時出錯。
  • 交易控制:大量資料時包裝在 SqlTransaction 中,確保原子性。
  • 效能優化:若資料量極大,考慮分批處理或使用 SqlBulkCopy。
  • 索引策略:目標表 Phone3 於匯入前暫停非叢集索引,匯入後重建,大幅提升速度。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved