我在SQLite数据库中有一个用户表,还有一些其他表:roles
和userRoles
。userRoles
包含将用户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';