2017-07-20 16 views
-4
"INSERT IGNORE INTO DataBase.Table 
(OrderNumber, CCHolder, CCPartial, CCEci, CCTransDate, 
CCPmtRef,CCStatus,CCMaster) " + 
"VALUES (@orderNumber, @CCholder, 
@CCpartial, @CCeci, @CCtransDate, @CCpmtRef, @CCstatus, 
@CCmaster) " + 
"WHERE @CCmaster NOT EXISTS (SELECT CCMaster FROM 
DataBase.Table)"; 

私は新しいデータを挿入するたびに必要ですCCMasterは一意にとどまり、さまざまな方法で試してみました。MySqlクエリ構文エラーc#

+0

のようなものを試してみました。また、コードが何をしているのか、それが**あなたが望むものとどのように異なるのかを明確にしてください。 – mjwills

+0

エクセルワークシートのデータをDBに入力する必要があります。WHERE句をすべて削除しても問題ありませんが、DBのCCMaster値を重複しないようにチェックする必要があります。 – Nemanja

+0

ユニークな制約? – AndySavage

答えて

1

問題はINSERTステートメントのWHERE部分が間違っています"WHERE @CCmaster NOT EXISTS ...です。 INSERT INTO .. VALUESコンストラクトを使用するかINSERT INTO .. SELECT FROM .. WHEREコンストラクトを使用しますが、両方を混在させることはできません。 INSERT INTO .. VALUES構成を使用している場合、WHERE句はアプリケーションではありません。

INSERT IGNORE INTO DataBase.Table 
(OrderNumber, CCHolder, CCPartial, CCEci, CCTransDate, 
CCPmtRef,CCStatus,CCMaster) 
SELECT @orderNumber, @CCholder, 
@CCpartial, @CCeci, @CCtransDate, @CCpmtRef, @CCstatus, 
@CCmaster FROM DataBase.Table 
WHERE @CCmaster <> CCMaster 
+0

WHERE句をすべて削除すると、すべてうまく動作しますが、Excelワークシートのデータを使用して表を作成しています。だから私はパラメータを取得するテーブルを持っていないので、選択とこの方法は私のために動作しません。 – Nemanja

2

ここで十分なコンテキストはありません。これはあなたのために良い解決策のようには見えませんが、あなたは私たちに全体の方法をご提示ください

WHERE @CCmaster not in (SELECT CCmaster FROM DATABASE.Table)

+0

私は入ってこなかったので、うまくいきません。エクセルワークシートからDBにデータを入力する必要があります。WHERE句をすべて削除すると、DBにCCMaster値が重複していないかチェックする必要があります。 – Nemanja

+0

「動作しません」と定義します。 – mjwills

+0

"SQL構文に誤りがあります。正しい構文が" WHERE 10386744 NOT IN(SELECT CCMaster FROM DataBase.Table) "の行1" \t文字列の近くで使用するようにMySQLサーバーのバージョンに対応するマニュアルを確認してください – Nemanja