在SQL查询中使用NOT EXISTS

时间:2016-08-28 17:44:53

标签: mysql

我已经阅读了大部分答案,甚至尝试过。但这是我的情况,我将.csv文件中的记录插入数据库。我想插入一条记录,如果它不存在。

这是我的查询

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是一个PHP数组,用于保存.csv文件的记录。没有这部分

,insert语句可以正常工作
WHERE NOT EXISTS (SELECT retailerID 
                  FROM retailer 
                  WHERE contact = '$emapData[1]')

但我的目标没有实现。

1 个答案:

答案 0 :(得分:0)

你不能以这种方式使用WHERT和INSERT。

你能做什么:

正如@Sylwit建议的那样,在联系时创建唯一索引并使用INSERT IGNORE

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]')