我不是很喜欢数据库,也许我说的是一些微不足道的事情。
我正在使用MySql,我必须实现“复杂” INSERT 查询。
我的意思是我必须做这样的事情:
INSERT INTO MarketDetails_CommodityDetails
(market_detail_id, commodity_detail_id) VALUES
( XXX, YYY)
其中 XXX 和 YYY 不是简单值,而是两个 SELECT 查询的结果都返回单个值( XXX 由SELECT查询返回, YYY 由另一个查询返回。
我知道我可以执行这些查询,将输出存储在变量中,然后调用我的插入查询传递这些参数,但我问是否有办法自动将其插入到我的INSERT查询中。
答案 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)
)