我正在尝试插入以下几条记录:
SET @user_id = (select `id` from users where `email` IN( 'carlos+01@comp.com', 'carlos+223344@comp.com' ) );
SET @badge_id = (select `id` from badges where `slug` = 'elearning_nutrition');
INSERT INTO `instructor_badges` (`id`, `user_id`, `badge_id`, `is_active`, `is_manual`, `created`)
VALUES (UUID(), @user_id, @badge_id, '1', '0', NOW());
但是我收到此错误:
[查询 1 中的错误] 子查询返回多于 1 行
在这种情况下,我必须插入 2 条记录。如何执行此查询?
你可以
试试这个。不过,这会将用户加入徽章。因此,如果您选择两个用户和两个徽章,您将获得四行要插入的内容。但我认为这就是你所说的你想要实现的目标。
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'
好的,我用这种方式解决了,还有没有更好的方法,因为我必须在第一位置写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' )