条件INSERT进入MySQL - 没有存在

时间:2013-03-26 21:20:07

标签: php mysql sql-insert

当客户尚未拥有购买产品的记录时,我正尝试进行INSERT INTO查询。

我已经尝试过以下SQL,但它似乎不起作用。

$queryAddPurchase = "INSERT INTO purchase (UserID, Product, Price) 
              VALUES ('$userID', '$product', '$price')
              WHERE NOT EXISTS(SELECT Product
                                       FROM purchase
                       WHERE Product = '$product'
                       AND UserID = '$userID')";

我收到的错误如下:

  

您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在'不存在的地方附近使用正确的语法(在第3行选择产品)

非常感谢任何建议!

2 个答案:

答案 0 :(得分:1)

假设用户可能只购买每种产品中的一种(永远和所有产品)。

ALTER TABLE purchase ADD UNIQUE KEY (`UserID`, `Product`); -- run this just once. this changes the table

INSERT IGNORE INTO purchase (UserID, Product, Price) VALUES ('$userID', '$product', '$price');

请注意,这会阻止他多次购买任何产品,这可能不是理想的结果。

答案 1 :(得分:1)

如果可能,请向表中添加UNIQUE约束。有点像...

alter table purchase add unique user_product (UserID, ProductID);

你的条件插入变得微不足道了:

INSERT IGNORE INTO purchase (UserID, Product, Price) 
    VALUES ('$userID', '$product', '$price')

如果 不适合您,请在此处使用所选答案:MySQL Conditional Insert

答案简述:

INSERT INTO purchase (UserID, Product, Price) 
    SELECT '$userID', '$product', '$price'
    FROM dual
        WHERE NOT EXISTS (
            SELECT * FROM purchase
            WHERE UserID='$userID'
                AND ProductID='$product'
        )