Diagram showing multiple data streams converging into a single node

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 節點)驗證鍵值、衝突處理與合併結果,再接上真實來源。

發佈留言

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

High Quality

Lorem ipsum dolor sit amet, consectetur adipiscing elitsed do eiusmod tempor.

Fast Delivery

Lorem ipsum dolor sit amet, consectetur adipiscing elitsed do eiusmod tempor.

Best Warranty

Lorem ipsum dolor sit amet, consectetur adipiscing elitsed do eiusmod tempor.