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上出现“(”
)。