merge 语句报错处理:when not able to build hash (redistribution) JOIN relationship between merge target and source.
1.新建测试表:
-- 创建目标表 employees
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
employee_name VARCHAR(50),
department VARCHAR(50)
);
-- 创建源表 new_employees
CREATE TABLE new_employees (
employee_id INT PRIMARY KEY,
employee_name VARCHAR(50),
department VARCHAR(50)
);
2.插入数据
-- 向 employees 表插入数据
INSERT INTO employees (employee_id, employee_name, department) VALUES
(1, 'Alice', 'HR'),
(2, 'Bob', 'IT');
-- 向 new_employees 表插入数据
INSERT INTO new_employees (employee_id, employee_name, department) VALUES
(1, 'Alice Smith', 'HR'), -- 更新 Alice 的姓名
(3, 'Charlie', 'Sales'); -- 新增员工 Charlie
3.执行merge
MERGE INTO employees e
USING new_employees n
ON (e.employee_id = n.employee_id)
WHEN MATCHED THEN
UPDATE SET e.employee_name = n.employee_name, e.department = n.department
WHEN NOT MATCHED THEN
INSERT (employee_id, employee_name, department)
VALUES (n.employee_id, n.employee_name, n.department);
报错: (GBA-02SC-1001) Can't DO Merge when not able to build hash (redistribution) JOIN relationship between merge target and source.
修改目标表结构:关联字段需要作为分布键
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
employee_name VARCHAR(50),
department VARCHAR(50)
) distributed by ('employee_id');

修改后执行:

热门帖子
- 12025-12-01浏览数:182763
- 22023-05-09浏览数:25057
- 42023-09-25浏览数:18525
- 52020-05-11浏览数:17528