mysql - 同时插入状态和选定值

标签 mysql sql sqlite

表用户

|_id, | login |
---------------
|  1  |  test |

表格角色

|_id, | role_name|
------------------
|  1  |  Admin   |
|  2  | Moderator|
|  3  |  User    |

表 User_Login

|用户 ID | role_id |

我想为 ID 为 1 的用户设置在查询中按他们的名字搜索的角色,这是我到目前为止得到的:

"INSERT INTO user_role
        + "(userId, roleId) VALUES (1, (SELECT r._id FROM roles r WHERE r.role_name IN ('Admin', 'Moderator', 'User')))"

事情是从角色中只设置了一个 Id 而不是 3

预期结果:

|user_id|role_id|
-----------------
|   1   |   1   |
|   1   |   2   |
|   1   |   3   |

我得到的是:

|user_id|role_id|
-----------------
|   1   |   1   |

最佳答案

是否使用 insert 。 . .选择解决你的问题?

INSERT INTO user_role(userId, roleId) 
    SELECT 1, r._id
    FROM roles r
    WHERE r.role_name IN ('Admin', 'Moderator', 'User');

role_name 可能与 IN 列表中的内容不匹配。也许您应该只运行子查询并查看您得到的结果。

关于mysql - 同时插入状态和选定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32633553/

相关文章:

ios - 如何在 swift 中使用现有的 SQLite 数据库?

ios - 如何使用外键从两个表中获取记录

php - 解析一个巨大的sql文件的最佳方法是什么

sql - 将映射的 XPath 表达式转换为包含关系数据的 XML

php - 何时在 PHP 中将数据库结果作为对象和数组获取?为什么?

mysql - 使用连接两个表从一个表中删除

sql - postgresql SELECT 1 value and count(value),但将计数限制为 1

Android sql 游标速度慢

mysql - 使用 sqlmap 对数据库进行指纹识别

mysql - WHERE 子句中的列别名