1

データを転送しようとしているデータベースが2つあります。

現在、一方から他方への注文の取得に取り組んでいますが、正しい方法がわからないことがあります。

これまでのクエリは次のとおりです...

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-サブクエリが複数の行を返す」というエラーを返しています。

私が目指している結果は、次のようになります...

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 サブクエリには 1 つの結果しか含めることができません (そして、明らかにあなたの結果はもっと返されています)。これを修正するために制限を追加できます。

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 に答える