2017-04-21 18 views
0

1つのMysqlテーブルから別のテーブルに書き込んでいますが、挿入する値が既に存在するかどうかを確認する必要があります。私は値をチェックしています2列に索引を設定しようとしたMYSQL値が存在しない場合は、別のテーブルに値を挿入してください。

をここに私のクエリである(onhandSales_Order & onhandSKU。。):

INSERT INTO onhand(Sales_Order, SKU, Inventory, Time) 
    SELECT Sales_Order, Part_Number, '0', Now() AS DateTimeStamp from 
    fullfillment_sage WHERE New_OnHand IN (-1, 0, 'NULL') OR New_OnHand IS NULL 
WHERE NOT EXISTS (SELECT 
    `fullfillment_sage`.`Sales_Order`, 
    `fullfillment_sage`.`Part_Number` 
    FROM `fullfillment_sage` 
    LEFT JOIN `onhand` 
    ON `fullfillment_sage`.`Sales_Order` = `onhand`.`Sales_Order` 
    AND `fullfillment_sage`.`Part_Number` = `onhand`.`SKU` 
    WHERE `fullfillment_sage`.`New_OnHand` IN (-1, 0, 'NULL') OR 
    `fullfillment_sage`.`New_OnHand` IS NULL); 

ここでは、クエリエラー:

'WHERE NOT EXISTS (SELECT `fullfillment_sage`.`Sales_Order`, 
+0

エラーは何ですか? –

+0

[Err] 1064 - SQL構文に誤りがあります。 'WHERE NOT EXISTS'(SELECT –

+0

'insert'は' where'をサポートしていません) –

答えて

1

あなたの外側の選択肢に2つのwhere文があります。 。最初のもののためにあなたの、または()を包み込み、2番目をどこに変更しますか?

INSERT INTO onhand(Sales_Order, SKU, Inventory, Time) 
    SELECT Sales_Order 
     , Part_Number 
     , 0 
     , Now() AS DateTimeStamp 
    FROM fullfillment_sage 
    WHERE (New_OnHand IN (-1, 0, 'NULL') OR New_OnHand IS NULL) 
    AND NOT EXISTS (SELECT `fullfillment_sage`.`Sales_Order` 
         , `fullfillment_sage`.`Part_Number` 
        FROM `fullfillment_sage` 
        LEFT JOIN `onhand` 
         ON `fullfillment_sage`.`Sales_Order` = `onhand`.`Sales_Order` 
        AND `fullfillment_sage`.`Part_Number` = `onhand`.`SKU` 
        WHERE `fullfillment_sage`.`New_OnHand` IN (-1, 0, 'NULL') 
         OR `fullfillment_sage`.`New_OnHand` IS NULL); 

これは、選択に他の問題がないことを前提としていますが、まだ十分に詳しくは見ていません。

文字列 '0'のインベントリを挿入する必要はありません。暗黙のキャストはおそらくあなたを助けていると思います。多分

new_onhandあなたがたり....かを持っているのでNew_Onhandがゼロにヌル集合であるとnew_onhandはどちらかである-1または0を確認する場合は、(New_OnHand IN (-1, 0, 'NULL') OR New_OnHand IS NULL)に... coalesce(New_OnHand,0) IN (-1, 0)を変えることができる「ヌル」をelimninateする必要があります

0

コメントに記載されているように、insertwhereをサポートしていません。このデータセットが存在するかどうかを調べるif文を作成することをお勧めします。そうでない場合は、inesertクエリを実行します。

0

存在しない場所を存在しない場所に変更してください。これは、既存のSELECT文に余分な句を追加することです。 (これは試していません)

関連する問題