我有两个数据库,我正试图在它们之间传输数据。
我现在正在努力从一个到另一个接到订单,但我遇到了一些我无法弄清楚正确方法的事情。
这是迄今为止的查询...
INSERT INTO `NEWTEST`.`Order_LineDetails`
( OrderLineItem_ID, Customer_ID, Order_ID )
SELECT
OrderDetailID,
(
SELECT o.CustomerID
FROM `OLDTEST`.`Order_Details` od
JOIN `OLDTEST`.`Orders` o ON o.OrderID = od.OrderID
),
OrderID
FROM `OLDTEST`.`Order_Details`
这将返回错误'#1242 - 子查询返回超过1行'。
我想要的结果就是......
OLDTEST.Order_Details -> NEWTEST.Order_LineDetails
OLDTEST.Order.CustomerID -> NEWTEST.Customer_ID
OLDTEST.Order_Details.OrderID -> NEWTEST.Order_ID
我错过了什么?
::::::编辑:::::::
现在这是正确的,并且运行正常。
SELECT
od.OrderDetailID,
o.CustomerID,
od.OrderID
FROM `OrderProcessing`.`Order_Details` od
JOIN `OrderProcessing`.`Orders` o ON o.OrderID = od.OrderID
LIMIT 100
答案 0 :(得分:5)
当你在SELECT
子句中使用子查询时,它必须返回一行,因此你得到的错误。
实际上你似乎不需要子查询:
INSERT INTO `NEWTEST`.`Order_LineDetails`
SELECT
od.OrderDetailID,
o.CustomerID,
od.OrderID
FROM `OLDTEST`.`Order_Details` od
JOIN `OLDTEST`.`Orders` o ON o.OrderID = od.OrderID
(在运行之前,请注释INSERT
行,以确保它提供您期望的结果。
答案 1 :(得分:0)
MySQL子查询只能包含一个结果(显然你的子结果更多)。您可以添加限制来解决此问题:
SELECT o.CustomerID
FROM `OLDTEST`.`Order_Details` od
JOIN `OLDTEST`.`Orders` o ON o.OrderID = od.OrderID LIMIT 1