gpt4 book ai didi

javascript - 如果列等于 0 则删除行 (mysql)

转载 作者:行者123 更新时间:2023-11-29 16:48:50 26 4
gpt4 key购买 nike

你好,我正在构建一个购物车,但遇到了一个问题。目前,当有人添加商品时,他们会填写数量并单击“添加到购物车”。使用此命令将该商品插入购物车表

INSERT INTO cart(item_id, cart_id, quantity)
VALUES(?,?,?)
ON DUPLICATE KEY UPDATE
quantity = quantity + ${quantity};

好的,如果我的购物车中有一个已经存在的商品,它会添加到给定的新数量的数量中,这样就可以正常工作。

所以我的问题是,如果有人输入 0 数量,例如我希望将该商品从购物车中删除。现在我有

if (Number(quantity) === 0)
{
const del = `DELETE FROM cart WHERE cart_id=? AND item_id=?`
const values = [cartId, itemId];

connection.query(del, values, (err, results, feilds) => {
if (err) throw err;
res.send('deleted item from cart');
});
}
else
{
const query = `INSERT INTO cart(item_id, cart_id, quantity)
VALUES(?,?,?)
ON DUPLICATE KEY UPDATE
quantity = quantity + ${quantity}`;

const values = [itemId, cartId, quantity];

connection.query(query, values, (err, results, fields) => {
if (err) throw err;
res.send(results);
});
}

效果很好,但我想知道有没有办法只用 mysql 来做到这一点?例如

INSERT INTO cart(item_id, cart_id, quantity)
VALUES('the_items_id', 'the_cart_id', quantity)
IF quantity = 0
DELETE FROM cart WHERE card_id='the_cart_id' AND item_id='the_items_id'

让您知道 cart_id 是与存储在 cookie 中的购物车关联的用户 ID。预先感谢您的帮助

最佳答案

您实际上无法在一个查询中完成此操作,但是您可以在一个事务中完成此操作。

基本上你可以

START TRANSACTION;

If(Cart exists)
IF(Item exists in cart)
IF(quatitiy <= 0) -> delete item
Else(add item to cart)

COMMIT;

但基本上,在一个查询中完成您要查找的内容是不可能的。但可以使用一个事务来实现该逻辑。

在这里阅读:https://dev.mysql.com/doc/refman/8.0/en/commit.html可能有帮助。

干杯

关于javascript - 如果列等于 0 则删除行 (mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52937882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com