当客户尚未拥有购买产品的记录时,我正尝试进行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行选择产品)
非常感谢任何建议!
答案 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'
)