Mysql插入子查询

时间:2015-04-24 18:52:26

标签: mysql insert in-clause

我正在尝试插入几条记录:

{{1}}

但我得到了这个错误:

  

[查询1中的错误]子查询返回多行

在这种情况下,我必须插入2条记录。我怎么能执行这个查询?

2 个答案:

答案 0 :(得分:1)

你可以试试这个。不过,这会将笛卡尔加入用户的徽章。因此,如果您选择两个用户和两个徽章,您将获得四行插入。但我认为这就是你想要实现的目标。

INSERT INTO instructor_badges (id, user_id, badge_id, is_active, is_manual, created)
SELECT UUID(), users.id, badges.id, '1', '0', NOW()
FROM users 
JOIN badge
WHERE users.email IN( 'carlos+01@comp.com', 'carlos+223344@comp.com' )
&& badges.slug = 'elearning_nutrition'

答案 1 :(得分:0)

好的我用这种方式解决了,还有另一种更好的方法,因为我必须在第一个位置写user_id:

 SET @badge_id = (select `id` from badges where `slug` = 'elearning_nutrition');

INSERT INTO `instructor_badges` (`user_id`, `id`,  `badge_id`, `is_active`, `is_manual`, `created`)
select `id` , UUID(), @badge_id , '1', '0', NOW() from users where `email`   IN( 'german+01@zumba.com', 'german+223344@zumba.com' )