Mysql 我怎样才能实现一个;复杂的;插入检索调用其他查询的值的查询?
我不太喜欢数据库,也许我在说一些琐碎的话 我正在使用MySql,我必须实现一个“复杂的”INSERT查询 我的意思是我必须这样做: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由另一个查询返回) 我知道我可以执行这些查
INSERT INTO MarketDetails_CommodityDetails
(market_detail_id, commodity_detail_id) VALUES
( XXX, YYY)
其中,XXX和YYY不是简单的值,而是两个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列