如何实现检索调用其他查询的值的“复杂”INSERT查询?

时间:2018-02-21 16:01:23

标签: mysql sql database rdbms

我不是很喜欢数据库,也许我说的是一些微不足道的事情。

我正在使用MySql,我必须实现“复杂” INSERT 查询。

我的意思是我必须做这样的事情:

INSERT INTO MarketDetails_CommodityDetails
(market_detail_id, commodity_detail_id) VALUES 
( XXX, YYY)

其中 XXX YYY 不是简单值,而是两个 SELECT 查询的结果都返回单个值( XXX 由SELECT查询返回, YYY 由另一个查询返回。

我知道我可以执行这些查询,将输出存储在变量中,然后调用我的插入查询传递这些参数,但我问是否有办法自动将其插入到我的INSERT查询中。

2 个答案:

答案 0 :(得分:3)

为什么要使用insert values? 只需执行insert select

INSERT INTO MarketDetails_CommodityDetails(market_detail_id, commodity_detail_id) 
select * from 
(select --Complex select for XXX)
cross join 
(select --Complex select for YYY)

答案 1 :(得分:1)

如果您愿意,也可以使用值。确保使用2个括号而不是1,并且即使查询总是返回1行,也要确保使用limit语句。

INSERT INTO some_final_table (column1, column2) VALUES (
    (SELECT some_column_1 FROM some_middle_table_1 LIMIT 1), 
    (SELECT some_column_2 FROM some_middle_table_2 LIMIT 1)
)