1

我有两个数据库,我试图在它们之间传输数据。

我现在正在努力从一个订单到另一个订单,但我遇到了一些我无法弄清楚正确方法的事情。

这是迄今为止的查询......

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
4

2 回答 2

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行以确保它给出了您期望的结果)。

于 2012-07-31T20:19:25.933 回答
0

MySQL 子查询只能包含一个结果(显然你的返回更多)。您可以添加限制来解决此问题:

SELECT o.CustomerID
FROM `OLDTEST`.`Order_Details` od
JOIN `OLDTEST`.`Orders` o ON  o.OrderID = od.OrderID LIMIT 1
于 2012-07-31T20:17:45.070 回答