Mysql 我怎样才能实现一个;复杂的;插入检索调用其他查询的值的查询?

Mysql 我怎样才能实现一个;复杂的;插入检索调用其他查询的值的查询?,mysql,sql,database,rdbms,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由另一个查询返回) 我知道我可以执行这些查

我不太喜欢数据库,也许我在说一些琐碎的话

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

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

INSERT INTO MarketDetails_CommodityDetails
(market_detail_id, commodity_detail_id) VALUES 
( XXX, YYY)
其中,XXXYYY不是简单的值,而是两个SELECT查询的结果,都返回一个值(XXX由SELECT查询返回,而YYY由另一个查询返回)


我知道我可以执行这些查询,将输出存储在变量中,然后通过这些参数调用我的插入查询,但我想问的是,是否有一种方法可以在插入查询中自动执行该操作。

为什么要使用
插入值
? 只需执行
插入选择

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

为什么要使用
插入值
? 只需执行
插入选择

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

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

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)
)

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

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)
)

使用
交叉连接
听起来有点可怕。。相反,一个
联合所有人
会更聪明。@RaymondNijland除非一个
联合所有人
根本没有相同的效果。。。结果将是两行而不是两列使用
交叉连接
听起来有点可怕。。相反,一个
联合所有人
会更聪明。@RaymondNijland除非一个
联合所有人
根本没有相同的效果。。。结果将是2行而不是2列