如何将子查询INSERT作为返回许多行的列值?

时间:2015-12-29 22:57:59

标签: mysql sql

我需要使用子查询作为一个列值并将静态值作为第二列值将多个元组插入到表中。 我该怎么做呢?

我的SQL知识不是很大,所以我想知道你们是否可以为我清除这一点。

这是一个无效的查询,显示了我想要实现的目标。

INSERT INTO deleted_messages (message_id, account_id) VALUES ((
SELECT message_id FROM messages 
WHERE conversation_id = 23
), 42);

子查询返回一个包含多个“message_id”值的表(这就是我想要的)。

我正在寻找的结果:

Table: deleted_messages
id | message_id | account_id
-------------------------
 1 | 25         | 42
 2 | 36         | 42
 3 | 94         | 42

如果需要澄清,请告诉我。 提前谢谢!

2 个答案:

答案 0 :(得分:3)

只需使用insert . . . select,不使用values

INSERT INTO deleted_messages (message_id, account_id) 
    SELECT message_id, 42
    FROM messages 
    WHERE conversation_id = 23;

答案 1 :(得分:0)

您还需要在子查询中选择静态值,如下所示:

INSERT INTO deleted_messages (message_id, account_id) 
SELECT message_id, 42 FROM messages 
WHERE conversation_id = 23;
相关问题