當你的流程有多條資料流需要在「都準備好」時整併,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 Merge 或 Shallow Merge。
Merge 節點用於在所有數據流可用時合併多個數據流。支持多種合併模式,讓您可以靈活地組合來自不同數據流的數據。
Merge 節點 – 模式 (Modes)
Append
保留所有輸入的數據,一個接一個地輸出每個輸入的項目。節點等待所有連接輸入的執行。
Combine
合併來自兩個輸入的數據。可以通過多種方式合併:Matching Fields、Position 或 All Possible Combinations。
SQL Query
使用自定義 SQL 查詢合併數據。可以使用 SQL 語句如 JOIN 來精確控制數據合併方式。
Choose Branch
選擇保留哪個輸入。此選項始終等待兩個輸入的數據可用,然後輸出所選輸入的數據。
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 組合查詢
這提供了強大的數據操作能力,特別是處理複雜的數據合併需求時。
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 > Combine,Combine by > Matching Fields,在 Input 1 Field 和 Input 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 節點)驗證鍵值、衝突處理與合併結果,再接上真實來源。