n8n Merge 節點(06):Append/Combine/SQL/Choose Branch 全攻略(含衝突處理與深/淺合併)

當你的流程有多條資料流需要在「都準備好」時整併,Merge 節點就是核心工具。你可以依情境選:

  • Append:把各輸入依序串接輸出。
  • Combine:用 Matching Fields/Position/All Possible Combinations 合併;Matching Fields 又支援
    Keep Matches / Keep Non-Matches / Keep Everything / Enrich Input 1 / Enrich Input 2(對應內/外/左/右連接概念)。
  • SQL Query:用 AlaSQL 直接寫 SELECT … JOIN …,輸入表依連線順序命名為 input1/input2/...
  • Choose Branch:等到兩邊都有資料後,只輸出指定分支

合併時若欄位同名,預設以 Input 2 值覆蓋;你也可在 Options › Clash Handling 調整優先順序,或選 Always Add Input Number to Field Names 保留所有值。巢狀物件可選 Deep MergeShallow Merge

Merge 節點用於在所有數據流可用時合併多個數據流。支持多種合併模式,讓您可以靈活地組合來自不同數據流的數據。

Diagram showing multiple data streams converging into a single node

Merge 節點 – 模式 (Modes)

Append

保留所有輸入的數據,一個接一個地輸出每個輸入的項目。節點等待所有連接輸入的執行。

Combine

合併來自兩個輸入的數據。可以通過多種方式合併:Matching Fields、Position 或 All Possible Combinations。

SQL Query

使用自定義 SQL 查詢合併數據。可以使用 SQL 語句如 JOIN 來精確控制數據合併方式。

Choose Branch

選擇保留哪個輸入。此選項始終等待兩個輸入的數據可用,然後輸出所選輸入的數據。

Two overlapping data structures with highlighted conflicting fields

Merge 節點 – Combine 模式

Combine 模式提供多種合併數據的方式:

Matching Fields

通過字段值比較項目。可以選擇不同的輸出類型:

  • Keep Matches:合併匹配的項目(類似內連接)
  • Keep Non-Matches:合併不匹配的項目
  • Keep Everything:合併匹配和不匹配的項目(類似外連接)
  • Enrich Input 1:保留輸入 1 的所有數據,添加輸入 2 的匹配數據(類似左連接)
  • Enrich Input 2:保留輸入 2 的所有數據,添加輸入 1 的匹配數據(類似右連接)

其他合併方式

  • Position:基於項目順序合併。輸入 1 中索引 0 的項目與輸入 2 中索引 0 的項目合併,依此類推。
  • All Possible Combinations:輸出所有可能的項目組合,同時合併具有相同名稱的字段。

Merge 節點 – 衝突處理 (Clash Handling)

當多個項目在索引處有同名字段時,就會發生衝突。例如,如果輸入 1 和輸入 2 中的所有項目都有一個名為 language 的字段,這些字段就會衝突。

默認情況下,n8n 優先考慮輸入 2,這意味著如果 language 在輸入 2 中有值,n8n 在合併項目時會使用該值。

您可以通過選擇 Options > Clash Handling 更改此行為:

  • When Field Values Clash:選擇優先考慮哪個輸入,或選擇 Always Add Input Number to Field Names 保留所有字段和值
  • Merging Nested Fields
    • Deep Merge:合併項目的所有級別的屬性,包括嵌套對象
    • Shallow Merge:僅合併項目的頂層屬性,不合併嵌套對象

Merge 節點 – SQL Query 模式

SQL Query 模式允許您編寫自定義 SQL 查詢來合併數據:

SELECT * FROM input1 LEFT JOIN input2 ON input1.name = input2.id

來自前一個節點的數據可作為表使用,您可以在 SQL 查詢中根據它們的順序將它們用作 input1、input2、input3 等。

此模式使用 AlaSQL 庫,支持多種 SQL 語句,包括:

  • SELECT、FROM、WHERE 等基本查詢
  • JOIN 操作(INNER JOIN、LEFT JOIN 等)
  • GROUP BY 和聚合函數
  • ORDER BY 排序
  • UNION 組合查詢

這提供了強大的數據操作能力,特別是處理複雜的數據合併需求時。

Step by step workflow example showing data being merged from two sources

Merge 節點 – 實例演示

以下是一個使用 Merge 節點的簡單示例:

準備示例數據

使用兩個 Code 節點創建示例數據:

第一個 Code 節點(人員數據):

return [
  { json: { name: 'Stefan', language: 'de' } },
  { json: { name: 'Jim', language: 'en' } },
  { json: { name: 'Hans', language: 'de' } }
];

創建第二個數據源

第二個 Code 節點(問候語數據):

return [
  { json: { greeting: 'Hello', language: 'en' } },
  { json: { greeting: 'Hallo', language: 'de' } }
];

配置 Merge 節點

添加 Merge 節點,將第一個 Code 節點連接到 Input 1,第二個 Code 節點連接到 Input 2。

選擇 Mode > CombineCombine by > Matching Fields,在 Input 1 FieldInput 2 Field 中輸入 language。

總結

  • 選模式配情境
    • 串接清單→Append;
    • 依鍵值/順序/全組合合併→Combine;
    • 複雜關聯與聚合→SQL Query;
    • 分支二選一→Choose Branch。
  • 鍵值對齊很關鍵:Matching Fields 時先確保型別與命名一致(例如 id 都為字串或都為數字)。
  • 衝突處理要先想:同名欄位預設覆蓋為 Input 2;必要時改優先權或啟用「加上輸入編號」避免資訊遺失。
  • 深/淺合併取捨:需要合併巢狀屬性選 Deep;只要表層覆蓋選 Shallow
  • 多輸入(≥3):多來源匯整更彈性;SQL 模式中以 input1/input2/input3… 引用。
  • 效能與可維護性:大資料量時,先在上游過濾/取必要欄位;SQL 模式加入 WHERE/SELECT 精簡欄位與筆數。
  • 除錯建議:先用小批示例(Code 節點)驗證鍵值、衝突處理與合併結果,再接上真實來源。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端