gpt4 book ai didi

mysql - 如何使用 MySql 'Insert Ignore into' 查询根据不同表中的某些值插入记录

转载 作者:行者123 更新时间:2023-11-29 05:15:55 26 4
gpt4 key购买 nike

我有如下两个表。下面提到的两个表中的 Id 列值都是自动递增的。

登录信息
+----+------------+------------+
| Id | LoginName | IP |
+------+------------+------------+
| 1 | 用户 1 | aa.bb.cc.dd|
| 2 | 用户2 | xx.xx.xx.xx|
| 3 | User3 | ii.ii.ii.ii|
+----+------------+------------+

用户组
+----+------------+------------+
| Id | LoginName | 组 |
+------+------------+------------+
| 1 | User1 | Group1 |
| 2 | 用户 1 | 默认 |
| 3 | User2 | Group2 |
| 4 | User3 | Group3 |
+----+------------+------------+

LoginInfo 表中的每个用户都应该是 UserGroups 表中“默认”组的成员。因此在上表中,User1 关联到“默认”组,但 User2 和 User3 没有。

我想检查是否为 UserGroups 表中的每个用户添加了“默认”组条目。如果可用,则忽略插入,否则为该用户插入新记录。

我试过的mysql查询是
INSERT IGNORE INTO USERGROUPS(LOGINNAME, GROUPS) SELECT LOGINNAME, 'Default' FROM LOGININFO L WHERE L.IP IS NOT NULL;
执行后,消息显示为 3 行受影响,UserGroups 表看起来像

+----+------------+------------+
| Id | LoginName | 组 |
+------+------------+------------+
| 1 | User1 | Group1 |
| 2 | 用户 1 | 默认 |
| 3 | User2 | Group2 |
| 4 | User3 | Group3 |
| 5 | 用户 1 | 默认 |
| 6 | 用户 2 | 默认 |
| 7 | User3 | 默认 |
+----+------------+------------+

但我实际寻找的是如下

+----+------------+------------+
| Id | LoginName | 组 |
+------+------------+------------+
| 1 | User1 | Group1 |
| 2 | 用户 1 | 默认 |
| 3 | User2 | Group2 |
| 4 | User3 | Group3 |
| 5 | 用户 2 | 默认 |
| 6 | 用户 3 | 默认 |
+----+------------+------------+

请告知有关查询或任何解决方法的建议。

最佳答案

在执行 INSERT IGNORE 之前必须添加唯一约束:

ALTER TABLE UserGroups ADD UNIQUE (LoginName, Groups)

然后你可以执行这个查询:

INSERT IGNORE INTO USERGROUPS(LOGINNAME, GROUPS)
SELECT LOGINNAME, 'Default'
FROM LOGININFO
WHERE IP IS NOT NULL

请看这个fiddle .

关于mysql - 如何使用 MySql 'Insert Ignore into' 查询根据不同表中的某些值插入记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32913845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com