在表格内有2列:userid
和roleid
。每个用户应至少有roleid
4。目前大约有10.000条记录,但不知何故少量用户不具备此角色。如果它不存在于MySQL表中,则添加一行
视觉例如:
userid | roleid
1 1
1 4
2 1
2 4
3 1 <---------- userid 3 misses roleid 4!
4 1
4 4
是否有可能执行查询,并添加与用户ID和角色ID行时该组合不存在?
在表格内有2列:userid
和roleid
。每个用户应至少有roleid
4。目前大约有10.000条记录,但不知何故少量用户不具备此角色。如果它不存在于MySQL表中,则添加一行
视觉例如:
userid | roleid
1 1
1 4
2 1
2 4
3 1 <---------- userid 3 misses roleid 4!
4 1
4 4
是否有可能执行查询,并添加与用户ID和角色ID行时该组合不存在?
是的。
insert into userRoles(userid, roleid)
select userid, 4
from userRoles
group by userid
having sum(roleid = 4) = 0;
的having
子句中的sum(role = 4)
计算行对于具有4
每个用户的数量。 = 0
说没有。
注意:这为该表中的所有用户提供了角色ID 4.可能有用户根本没有任何角色。
如果你想他们,然后用users
表:
insert into userRoles(userid, roleid)
select u.userid, 4
from users u
where not exists (select 1 from userRoles ur where ur.userid = u.userid);
您要搜索的用户有没有角色ID
insert into yourTable (userId, roledid)
select userid, 4
from yourTable
where roleid <>4
4