Oracle SQL中基于关联表批量插入重复用户对应组记录的方法
Oracle SQL 批量插入重复LOGIN-NAME对的缺失记录到groups表
完整INSERT语句
通过关联表匹配对应USER_GUID,实现批量插入的SQL如下:
INSERT INTO groups(owner_guid, user_guid) SELECT o.guid, g.user_guid FROM owners o JOIN owners o_exist ON o.login = o_exist.login AND o.name = o_exist.name JOIN groups g ON o_exist.guid = g.owner_guid WHERE (o.login, o.name) IN ( SELECT login, name FROM owners GROUP BY login, name HAVING COUNT(*) > 1 ) AND o.guid NOT IN (SELECT owner_guid FROM groups) AND NOT EXISTS ( SELECT 1 FROM groups g_dup WHERE g_dup.owner_guid = o.guid );
语句说明
- 通过自关联
owners表,找到同LOGIN-NAME对下已存在于groups的记录,以此获取对应的user_guid。 - 子查询筛选出LOGIN-NAME重复的用户组,同时排除已在
groups表中的GUID。 - 最后添加
NOT EXISTS子句,避免重复执行时插入重复记录。
内容的提问来源于stack exchange,提问作者dtm_
相关产品推荐
相关产品推荐

