为表中的每条记录创建一个关系



我在SQLite数据库中有一个用户表,还有一些其他表:rolesuserRolesuserRoles包含将用户ID与角色ID链接起来的外键关系。每个用户可以有0到多个角色。

我有一个现有的数据库,其中有一个用户表,我在事实之后添加了角色表。我需要一个将每个用户添加到";默认";角色

为此,我写了一个查询:

INSERT INTO userRoles (roleID, userID)
SELECT id from users, SELECT id from roles WHERE roleName = 'default';

我还尝试指定值:

INSERT INTO userRoles (roleID, userID) VALUES (
SELECT id from users,
SELECT id from roles WHERE roleName = 'default'
);

然而,这是不正确的。特别是SQLite告诉我:

Error: in prepare, near "SELECT": syntax error (1)

这是SQLite版本3.37.2

只能从表users中获取SELECT,并使用标量子查询来获取'default'角色名称的id

INSERT INTO userRoles (userID, roleID)
SELECT id, (SELECT id FROM roles WHERE roleName = 'default') FROM users;

或者,带有连接:

INSERT INTO userRoles (userID, roleID)
SELECT u.id, r.id 
FROM users u JOIN roles r
WHERE r.roleName = 'default';

相关内容

最新更新