为select查询的每个结果插入另一个表

时间:2016-05-12 08:42:15

标签: 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。

我认为有一种简单的方法可以做到这一点,但我无法弄清楚。

1 个答案:

答案 0 :(得分:3)

为什么不在一个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在一个查询中执行整个操作,但在性能方面要小心。