Conditional INSERT INTO MySQL - WHERE NOT EXISTS

后端 未结 2 1026
忘了有多久
忘了有多久 2020-12-21 18:51

I am trying to do an INSERT INTO query when the customer does not already have a record of purchasing a product.

I have tried the below SQL, but it doesn\'t seem to

2条回答
  •  执笔经年
    2020-12-21 19:19

    If possible, add a UNIQUE constraint to the table. Something like ...

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

    And your conditional insert becomes trivial:

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

    If this is not a suitable solution for you, use the selected answer here: MySQL Conditional Insert

    That answer, in brief:

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

提交回复
热议问题