如何编写mysql查询以仅在foreign_key存在的情况下插入值

阿查乌斯

我有一个user_role表,表已user_id引用为foreign_key user

desc user;
+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| id              | int(11)      | NO   | PRI | NULL    | auto_increment |
| name            | varchar(256) | YES  |     | NULL    |                |
| e_key            | varchar(256) | NO  | UNI   | NULL    |                |
+-----------------+--------------+------+-----+---------+----------------+

desc user_role;
+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| id              | int(11)      | NO   | PRI | NULL    | auto_increment |
| name            | varchar(256) | YES  |     | NULL    |                |
| user_id            | int(11) | NO  |     | UNIQ    |                |
+-----------------+--------------+------+-----+---------+----------------+

我想创建一个测试数据,user_role仅在user_id存在时才将值插入表中。可以通过唯一键“ e_key”来识别用户。我正在搜索这样的查询

SET @user_id = (select u.id from user u where u.e_key = 'dave');
IF(@user_id IS NOT NULL) THEN
BEGIN
INSERT INTO user_role(`name`, user_id) VALUES ('admin', @user_id) ON DUPLICATE KEY UPDATE `name` = 'admin';
END;
END IF;

但是SQL抛出错误。有什么办法可以实现这种行为?

启动

您可以更改INSERT以将SELECT用作要插入的字段的源,而SELECT会检查用户表。

像这样的东西:

INSERT INTO user_role(`name`, user_id) 
SELECT 'admin', id 
FROM user 
WHERE id = @user_id 
ON DUPLICATE KEY UPDATE `name` = 'admin';

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MYSQL仅在没有手动插入值的情况下才触发触发器-不起作用

MySQL仅在不存在但有更多条件的情况下插入

如何在不编写长查询的情况下查询所有GraphQL类型字段?

仅在存在的情况下包括

Scala Slick,仅在不存在的情况下如何创建模式

Angular2如何仅在父组件存在的情况下将其注入指令?

如何仅在文件存在的情况下将其删除?

用户能否仅在具有访问权限的情况下编写复杂的查询?

仅在存在键的情况下,将$ push值与猫鼬进行数组

如何在不使用PHP的情况下基于列的值编辑此mySQL查询?

从指定日期回溯7天,仅在存在该天的情况下才检索值

如何运行查询以仅在指定的列包含值的情况下提取数据

Angular-仅在存在URL参数的情况下如何执行查询

在python中,如何最好地在给定变量路径和值的情况下将key:value插入json

mysql,仅在存在的情况下如何选择

仅在插入CD的情况下引导系统

仅在不存在的情况下插入记录

仅在不存在的情况下插入数据

如何在一个表中插入数据并确保该表中的foreign_key存在?

SQL仅在id不存在的情况下将新行插入MYSQL表中

仅在设置了特定值的情况下才更新MySQL查询中的特定列

MySQL触发器:如何仅在填充特定列的情况下插入?

为什么在PDO插入错误值的情况下将此准备插入MySql中?

mysql SELECT列仅在存在的情况下

Mongoid:在不丢失数据的情况下更改(重命名)foreign_key名称

在这种情况下,如何编写SQL查询?

SQL Record仅在不存在零值的情况下返回

如何仅在不存在的情况下将值附加到数组,如果不存在则将其删除?

如何在没有语法错误的情况下插入不存在的值?