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

SET @user_id = (select `id` from users where `email` IN( '[email protected]', '[email protected]' ) );

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( '[email protected]', '[email protected]' )
&& badges.slug = 'elearning_nutrition'

10-07 15:38