2016-08-28 6 views
0

私はほとんどすべての答えを読み、それを試してみました。しかし、私が.csvファイルからレコードをデータベースに挿入している私の場合です。レコードが存在しない場合は挿入したいここでSQLクエリでNOT EXISTSを使用する

は私のクエリです。ここ

INSERT INTO retailer(retailerCode, contact, shopName, address, 
        retailerType, lastVisit, officeID, createDate) 
VALUES ('', '$emapData[1]', '$emapData[2]', '$emapData[3]', 
     '$emapData[4]', '', '$id', CURDATE()) 
WHERE NOT EXISTS (SELECT retailerID 
        FROM retailer 
        WHERE contact = '$emapData[1]') 

$emapData.csvファイルの記録を保存し、PHPの配列です。この部分がなくてもinsert文は正常に動作します

WHERE NOT EXISTS (SELECT retailerID 
        FROM retailer 
        WHERE contact = '$emapData[1]') 

私の目標は達成されていません。

+0

をIGNORE INSERT使用

'WHERE NOT EXISTS'ステートメント?それは私によく見える –

+1

連絡先の列に一意のインデックスを使用していないと、なぜ後に 'INSERT IGNORE ...'? – Sylwit

+0

どのDBMSを使用していますか? –

答えて

0

このようにINSERTでWHEREを使用することはできません。

あなたは何ができる:@Sylwitが示唆したように、接触時に一意のインデックスを作成し、追加したときに何が起こる

alter table retailer add unique (contact) 

使用INSERT INTO SELECT構文

INSERT INTO retailer(retailerCode,contact,shopName,address,retailerType,lastVisit,officeID,createDate) 
select '','$emapData[1]','$emapData[2]','$emapData[3]','$emapData[4]','','$id', CURDATE() 
from retailer 
WHERE NOT EXISTS (SELECT retailerID FROM retailer WHERE contact='$emapData[1]') 
+0

コードが正しく表示されない場合は、編集してください。 – Anonymous

+0

これは動作していません:( – Anonymous

+0

あなたの例では、あなたの列の部分にはretailerCodeを使用していますが、reatilerIDはあなたの場所にあります。例は機能しません。 –

関連する問題