Mysql 使用唯一ID作为输入
我有两张桌子 表用户具有唯一的Mysql 使用唯一ID作为输入,mysql,sql,Mysql,Sql,我有两张桌子 表用户具有唯一的用户名值 表角色具有唯一的角色名值 我需要编写一个脚本,将2加入用户到角色表中: INSERT INTO USER_TO_ROLE (user_id, role_id) VALUES (SELECT id FROM Users WHERE username=@username LIMIT 1, SELECT id FROM Roles WHERE rolename=@rolename LIMIT 1); MySQL Workbench给出错误代
用户名
值
表角色具有唯一的角色名
值
我需要编写一个脚本,将2加入用户到角色表中:
INSERT INTO USER_TO_ROLE
(user_id,
role_id)
VALUES
(SELECT id FROM Users WHERE username=@username LIMIT 1,
SELECT id FROM Roles WHERE rolename=@rolename LIMIT 1);
MySQL Workbench给出错误代码1064:
错误代码:1064。您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在第3行“select id from username=@username LIMIT 1,select record_id”附近使用的正确语法
是否有一种写入方法,这样我就不必在插入之前进行两次单独的数据库调用,即写下id值
已解决
使用的示例,我编写了以下SQL:
INSERT INTO USER_TO_ROLE
(user_id,
role_id)
SELECT u.id, r.id
FROM Users u JOIN Roles r
WHERE u.username=@username and r.rolename=@rolename;
我必须将值取出,才能使插入语句起作用。在
插入中不能有2个选择
子句。。。选择
query
您可以将查询重写为
INSERT INTO USER_TO_ROLE
(user_id,
role_id)
SELECT
(SELECT id FROM Users WHERE username=@username LIMIT 1),
(SELECT id FROM Roles WHERE rolename=@rolename LIMIT 1)
这样,您将有一个带有两个相应嵌套查询的
选择。您不能这样做。使用一个事务和两个单独的调用。这很酷。这需要某种版本吗?它给了我意外的SELECT\u SYM,期望在新的SELECT上出现“(”
)。