使用一个SQL查询进行SELECT,UPDATE,DELETE?

丹宁

我有一个很小的声明,它会减少一个值:

UPDATE cart_items SET quantity = quantity - 1
WHERE cart_id = {$cart_id} AND id = {$cart_item_id}

但是,如果递减后该值变为0,SQL是否可以删除该行?如果是这样,那么我想重新计算与该购物车匹配的行数:

SELECT FROM cart_items WHERE cart_id = {$cart_id}

如果行数为零,我想从另一个表中删除该记录,如下所示:

DELETE FROM cart WHERE id = {$cart_id}

目前似乎需要几个查询才能执行此操作,但是是否可以在单个SQL语句中完成所有操作?

阿尔特

简短的答案是,如果不将额外的查询包装在触发器或过程中,则是不可能的。

您可以在事务中完成此操作,而无需使用SELECT,但是它将需要3个查询:

START TRANSACTION;

    UPDATE cart_items 
       SET quantity = quantity - 1
     WHERE cart_id = {$cart_id} 
       AND id = {$cart_item_id};

    DELETE 
      FROM cart_items
     WHERE quantity = 0
       AND cart_id = {$cart_id} 
       AND id = {$cart_item_id};

    DELETE c
      FROM cart c
 LEFT JOIN cart_items ci
        ON ci.cart_id = c.id
     WHERE c.id = {$cart_id}
       AND ci.cart_id IS NULL;

COMMIT;

最后一个DELETE将购物车加入cart_items,如果找不到购物车,则将其删除(cart_items字段为NULL)。

我已经包含了可用的标识符以加快DELETEs的速度,尽管没有它们也应该没问题..它只会寻找并捡起其他数量为0的物品或空购物车。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用一个变量使用一个SELECT语句对多个表进行SQL查询

来自分类Dev

使用变量的一个SELECT语句对多个表进行SQL查询

来自分类Dev

在一个查询中使用INSERT,SELECT和UPDATE?

来自分类Dev

在一个SPARQL查询中进行DELETE + INSERT和SELECT

来自分类Dev

在一个查询MYSQL中进行INSERT和UPDATE

来自分类Dev

在一个查询MYSQL中进行INSERT和UPDATE

来自分类Dev

从另一个表使用count()进行SQL查询

来自分类Dev

如何使用一个以上具有onde条件的表进行sql查询?

来自分类Dev

使用另一个表中的条件从表中进行SQL查询

来自分类Dev

使用 LEAD 函数并在一个 SQL 查询中进行扣除计算

来自分类Dev

使用一个 SQL 查询设置多个变量,该查询使用 SELECT TOP 返回一行

来自分类Dev

SQL:使用UPDATE仅在一个查询中所有列的总和

来自分类Dev

如何使用SQL SELECT基于另一个表中的特定行查询表

来自分类Dev

在一个查询中组合SQL Select和AVG

来自分类Dev

SQL:在另一个查询中使用一个查询的结果

来自分类Dev

SQL Delete使用另一个表的值

来自分类Dev

对另一个SELECT中的每一行运行UPDATE查询

来自分类Dev

效率更高-多个SQL查询或一个查询并在php中进行处理?

来自分类Dev

SQL:基于另一个查询的值的顺序对查询结果进行排序

来自分类Dev

效率更高-多个SQL查询或一个查询并在php中进行处理?

来自分类Dev

使用一个SQL查询更新多行中的单列

来自分类Dev

在同一个SQL查询中使用别名

来自分类Dev

使用一个SQL查询删除postmeta和帖子

来自分类Dev

如何使用一个SQL查询创建多个表

来自分类Dev

使用一个 SQL 进行多行更新

来自分类Dev

SQL IF SELECT查询为null,然后执行另一个查询

来自分类Dev

运行嵌套的SQL查询以减去后一个SELECT查询的结果

来自分类Dev

执行一个mysql select查询,该查询在php中具有sql变量

来自分类Dev

SQL:选择两个不同的内容并在一个查询中对结果进行计算

Related 相关文章

  1. 1

    使用一个变量使用一个SELECT语句对多个表进行SQL查询

  2. 2

    使用变量的一个SELECT语句对多个表进行SQL查询

  3. 3

    在一个查询中使用INSERT,SELECT和UPDATE?

  4. 4

    在一个SPARQL查询中进行DELETE + INSERT和SELECT

  5. 5

    在一个查询MYSQL中进行INSERT和UPDATE

  6. 6

    在一个查询MYSQL中进行INSERT和UPDATE

  7. 7

    从另一个表使用count()进行SQL查询

  8. 8

    如何使用一个以上具有onde条件的表进行sql查询?

  9. 9

    使用另一个表中的条件从表中进行SQL查询

  10. 10

    使用 LEAD 函数并在一个 SQL 查询中进行扣除计算

  11. 11

    使用一个 SQL 查询设置多个变量,该查询使用 SELECT TOP 返回一行

  12. 12

    SQL:使用UPDATE仅在一个查询中所有列的总和

  13. 13

    如何使用SQL SELECT基于另一个表中的特定行查询表

  14. 14

    在一个查询中组合SQL Select和AVG

  15. 15

    SQL:在另一个查询中使用一个查询的结果

  16. 16

    SQL Delete使用另一个表的值

  17. 17

    对另一个SELECT中的每一行运行UPDATE查询

  18. 18

    效率更高-多个SQL查询或一个查询并在php中进行处理?

  19. 19

    SQL:基于另一个查询的值的顺序对查询结果进行排序

  20. 20

    效率更高-多个SQL查询或一个查询并在php中进行处理?

  21. 21

    使用一个SQL查询更新多行中的单列

  22. 22

    在同一个SQL查询中使用别名

  23. 23

    使用一个SQL查询删除postmeta和帖子

  24. 24

    如何使用一个SQL查询创建多个表

  25. 25

    使用一个 SQL 进行多行更新

  26. 26

    SQL IF SELECT查询为null,然后执行另一个查询

  27. 27

    运行嵌套的SQL查询以减去后一个SELECT查询的结果

  28. 28

    执行一个mysql select查询,该查询在php中具有sql变量

  29. 29

    SQL:选择两个不同的内容并在一个查询中对结果进行计算

热门标签

归档