如果 Table C 中的 Col A 和 Col B 的组合不存在,则在 Table 3 中插入新行
Insert New Row in Table 3 if combination of Col A and Col B in Table C Don't Exist
我有一个代码可以从 Tables 1 和 2 获取数据,然后将新行插入 Table3。我的问题是代码添加了已经存在的记录。当 groupid 和 userid 在 Table C 中的组合已经存在时,如何防止插入重复错误?
INSERT INTO mdl_groups_members (groupid,userid)
SELECT l.mgroup AS moodle, r.id AS mdl_user
FROM moodle AS l
JOIN mdl_user AS r
ON l.orders_id = r.id
WHERE l.mgroup > 0
这是我 运行 脚本之前的 table:
id groupid userid timeadded
1 1 1 1372631339
2 4 2 1372689032
3 8 3 1373514395
4 3 4 1373514395
这是我 运行 脚本之后的 table。我在不想插入的重复行旁边放置了一个“*”。
id groupid userid timeadded
1 1 1 1372631339
2 4 2 1372689032
3 8 3 1373514395
4 3 4 1373514395
*5 1 1 1372631339
*6 4 2 1372689032
*7 8 3 1373514395
*8 3 4 1373514395
9 2 6 1373514398
我已经尝试过此站点上的许多解决方案,但 none 都奏效了。我欢迎所有建议。
谢谢,
马特
如果要避免重复,则添加唯一索引或约束:
create unique index idx_mdl_groups_members_2 on mdl_groups_members(groupid, userid)
然后使用on duplicate key update
:
INSERT INTO mdl_groups_members (groupid, userid)
SELECT l.mgroup AS moodle, r.id AS mdl_user
FROM moodle l JOIN
mdl_user r
ON l.orders_id = r.id
WHERE l.mgroup > 0
ON DUPLICATE KEY UPDATE groupid = VALUES(groupid);
on duplicate key update
导致 insert
忽略重复错误,插入其他行没有问题。
我有一个代码可以从 Tables 1 和 2 获取数据,然后将新行插入 Table3。我的问题是代码添加了已经存在的记录。当 groupid 和 userid 在 Table C 中的组合已经存在时,如何防止插入重复错误?
INSERT INTO mdl_groups_members (groupid,userid)
SELECT l.mgroup AS moodle, r.id AS mdl_user
FROM moodle AS l
JOIN mdl_user AS r
ON l.orders_id = r.id
WHERE l.mgroup > 0
这是我 运行 脚本之前的 table:
id groupid userid timeadded
1 1 1 1372631339
2 4 2 1372689032
3 8 3 1373514395
4 3 4 1373514395
这是我 运行 脚本之后的 table。我在不想插入的重复行旁边放置了一个“*”。
id groupid userid timeadded
1 1 1 1372631339
2 4 2 1372689032
3 8 3 1373514395
4 3 4 1373514395
*5 1 1 1372631339
*6 4 2 1372689032
*7 8 3 1373514395
*8 3 4 1373514395
9 2 6 1373514398
我已经尝试过此站点上的许多解决方案,但 none 都奏效了。我欢迎所有建议。
谢谢, 马特
如果要避免重复,则添加唯一索引或约束:
create unique index idx_mdl_groups_members_2 on mdl_groups_members(groupid, userid)
然后使用on duplicate key update
:
INSERT INTO mdl_groups_members (groupid, userid)
SELECT l.mgroup AS moodle, r.id AS mdl_user
FROM moodle l JOIN
mdl_user r
ON l.orders_id = r.id
WHERE l.mgroup > 0
ON DUPLICATE KEY UPDATE groupid = VALUES(groupid);
on duplicate key update
导致 insert
忽略重复错误,插入其他行没有问题。