mysql - 为选择查询的每个结果插入不同的表

标签 mysql sql

如果我有这样的设置:

set @idToIgnore = (select user_id from user_field_value where user_field_id = 82 and value = 'No';

然后我运行一个选择查询:

select id from users where account_id = 10 and id != @idToIgnore;

返回约 15 个不同的 ID 值。

然后我想运行一个查询,例如:

insert into user_field_value(user_id, user_field_id, value) values (**user_id**, 82, 'Yes');

最终插入查询中的 user_id 是第二个查询中的每个 ID。

我想有一种简单的方法可以做到这一点,但我想不出来。

最佳答案

为什么不在一个INSERT INTO ... SELECT ... 中完成呢?查询?

INSERT INTO user_field_value(user_id, user_field_id, value) 
SELECT id, 82, 'Yes' FROM users 
WHERE account_id = 10 and id != @idToIgnore;

您也可以使用子查询而不是 @idToIgnore 在一个查询中完成所有操作,但要注意性能问题。

关于mysql - 为选择查询的每个结果插入不同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37181639/

相关文章:

php - 如何从mysql数据库中获取保存为数组的数据

mysql - 两个可能表的外键

mysql - 具有复数/变位的英语单词数据库

java - Mysql更新用户密码

php - 选择表中具有同一表中不同列的值的条件的行

sql - 使用按 ID 分组的 CTE Sql Server 2008 运行减法总计#

mysql super 奇怪的语法错误?

sql - 无法绑定(bind)多部分标识符的原因

sql - rails 作用域和连接

php - 如何修复空对象引用上的 java.lang.String org.json.JSONObject.toString()'?