MySQL:如何为另一个查询的每个id在一个表中插入多行?
我有一个键值表,需要从另一个表中为每个选定的MySQL:如何为另一个查询的每个id在一个表中插入多行?,mysql,Mysql,我有一个键值表,需要从另一个表中为每个选定的id插入多行 我获取用户id: SELECT @id := id FROM user WHERE email = 'my@email.com'; 我通过用户id获取事物的id: SELECT @things := id FROM `things` WHERE `owner_id` = @id; 现在,我需要为每个@things在键值表中插入多个值。这里的问题是我不能使用select子查询,因为我需要插入内联值,如: INSERT INTO ke
id
插入多行
SELECT @id := id FROM user WHERE email = 'my@email.com';
SELECT @things := id FROM `things` WHERE `owner_id` = @id;
@things
在键值表中插入多个值。这里的问题是我不能使用select子查询,因为我需要插入内联值,如:
INSERT INTO key_value (key, value)
VALUES (
@things, 'CUSTOM VALUE 1'
),
VALUES (
@things, 'CUSTOM VALUE 2'
);
编辑: 看起来我需要多个查询才能做到这一点:
SELECT @id := id FROM user WHERE email = 'startour@netron.no';
INSERT INTO key_value (`key`, `value`)
(
SELECT id, 'CUSTOM_VALUE_1'
FROM `things`
WHERE `owner_id` = @id
);
INSERT INTO key_value (`key`, `value`)
(
SELECT id, 'CUSTOM_VALUE_2'
FROM `things`
WHERE `owner_id` = @id
);
这完全是颠倒的。这有帮助吗?是的,它有助于迁移数据库数据和结构。谢谢,有点帮助,但我需要自定义值,而不是选定值。所以基本上它是两行插入,每个
things.id
。所以@Aleksandr(忽略设计的弱点)只需使用两行插入,就像Vikram上面描述的那样。@草莓,是的,这就是我们要做的。谢谢
INSERT INTO key_value (key, value)
SELECT user.id as key, things.id as value FROM user
left outer join things on user.id=things.owner_id
WHERE user.email = 'my@email.com'