我很抱歉,如果这可能是重复但我一直在StackOverflow上搜索一段时间,并且看不到任何完全适合我想要查询的查询。
基本上,我有一个用户数据库,我最近为用户创建了选项,但仅限于级别为1的用户。
现在我想要改变它,并为每个人提供选择,无论他们的水平如何。
我希望浏览当前在数据库中的所有用户,如果在该用户的urights中找不到与uid = id关系的选项,则使用user表中的用户id插入选项。
我一直在玩注射一段时间,但我似乎无法让它工作。
Here is a sqlfiddle I have created
我最近使用的3个查询是:
insert into urights ('', u.id, 1, 1, 0) (SELECT u.id FROM usr u WHERE (SELECT ur.id FROM urights ur WHERE ur.uid != u.id) )
SELECT id FROM usr u (INSERT INTO urights (id, uid, quotes, pos, nmode) VALUES ('', u.id, 1, 1, 0) WHERE uid NOT IN (u.id))
INSERT INTO urights (id, uid, quotes, pos, nmode) VALUES ('', a.id, 1, 1, 0) SELECT a.id FROM usr a WHERE NOT EXISTS (SELECT ur.uid FROM urights ur WHERE AS ur.uid = a.id)
我正在做错的任何指示和纠正这个的指导是非常感谢:)
更新了答案,这样您仍然可以在同一语句中设置其他值时迭代不存在的用户ID。
INSERT urights (uid, quotes, pos, nmode)
SELECT DISTINCT u.usernumber, 1, 1, 0
FROM usr u
WHERE
NOT EXISTS (SELECT uid FROM urights ur
WHERE ur.uid = u.usernumber);