2012-07-31 25 views
1

我有兩個數據庫,我試圖在它們之間傳輸數據。如何在MYSQL中使用select子查詢

我正在努力從一個訂單到另一個現在,但我遇到了一些我無法弄清楚正確的方法來做到這一點。

這裏的查詢迄今...

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 

回答

5

像你一樣,它必須返回一個單行,因此你收到的錯誤:您可以添加一個限制,解決這個問題。

其實你似乎並不需要在這裏的子查詢:

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線之前,請務必它給你期望的結果)。

+0

感謝您的支持。它節省了一些頭痛。 – Monty 2012-07-31 21:35:54

+0

Woops。我錯過了一些東西,請參閱上面的修改。 – Monty 2012-07-31 22:30:57

+0

我們能否看到一些示例數據,可能是http://sqlfiddle.com?該選擇查詢應爲您提供多行,除非每個訂單沒有匹配的訂單詳細信息。如果是這樣,你可以使用'LEFT OUTER JOIN'而不是你當前的(隱含'INNER')'JOIN',但是這應該會給你一堆'NULL'值,不是很有用... – bfavaretto 2012-07-31 22:40:32

0

MySQL subquerys只能包含一個結果(顯然你的返回更多)。當您使用SELECT子句中的子查詢

SELECT o.CustomerID 
FROM `OLDTEST`.`Order_Details` od 
JOIN `OLDTEST`.`Orders` o ON o.OrderID = od.OrderID LIMIT 1 
+0

我試過了。但是我在每行中都有相同的CustomerID。 – Monty 2012-07-31 20:18:59

+0

在這種情況下,你確定子查詢正在做你想要的嗎?您將需要調整子查詢以返回您期望的結果,同時只返回一行。 – Exupery 2012-07-31 20:28:10

相關問題