我有两个表:默认和用户具有相同列,默认列 user_id 除外在"用户"中独一无二它没有。
我想从用户获取所有行,并将其插入默认值,如果用户中的两行具有相同的 user_id ,我希望以这样的方式合并它们,以便使用非空/空值覆盖所有空/空值
这是一个例子
users
-----
user_id|name|email|address
--------------------------
1 |abc |null |J St
1 |coco|a@b.c|null
插入默认值后,我期待下一个结果:
defaults
-----
user_id|name|email|address
--------------------------
1 |abc |a@b.c|J St
@Eric B 提供answer如何使用插入值执行此操作:
假设表中有3列.. ID,NAME,ROLE
这将更新2 列。当ID = 1时,ROLE将不受影响。当ID = 1时 如果不存在,角色将被设置为“替补”。而不是 默认值。
INSERT OR REPLACE INTO Employee (id, name, role)
VALUES ( 1,
'Susan Bar',
COALESCE((SELECT role FROM Employee WHERE id = 1), 'Benchwarmer')
);
当我使用select for my insert
时,如何执行此操作insert or replace into defaults select ??? from users
答案 0 :(得分:1)
INSERT OR REPLACE INT DEFAULTS VALUES (ID, Name, Role)
(
SELECT ID, MAX(Name), MAX(Role) FROM Users GROUP BY ID
);
如果有最大值,则max将选择最大值而不是null。