MySQL-如果其中一行包含值,则更新一系列分组行(如果只有一个产品在库存中,则将所有产品设置为活动)
我在寻找这个问题的简明答案。我正在尝试更新产品表中的大量行。当前只有库存项目设置为活动。我希望创建一个快速语句,将具有相同“linked_id”的任何其他语句设置为active而不是deleted。到目前为止,我已经做到了:MySQL-如果其中一行包含值,则更新一系列分组行(如果只有一个产品在库存中,则将所有产品设置为活动),mysql,Mysql,我在寻找这个问题的简明答案。我正在尝试更新产品表中的大量行。当前只有库存项目设置为活动。我希望创建一个快速语句,将具有相同“linked_id”的任何其他语句设置为active而不是deleted。到目前为止,我已经做到了: UPDATE products SET active=1, deleted=0 WHERE stock>=1 OR warehouse_stock>=1 GROUP BY linked_id 显然,这不会起作用,因为在update语句中不能分组依据 您可以通
UPDATE products
SET active=1, deleted=0
WHERE stock>=1
OR warehouse_stock>=1
GROUP BY linked_id
显然,这不会起作用,因为在update语句中不能
分组依据 您可以通过自连接来完成:
UPDATE products p INNER JOIN products pp
ON pp.linked_id = p.linked_id
SET p.active = 1, p.deleted = 0
WHERE (p.active = 0 OR p.deleted = 1) AND (pp.stock >= 1 OR pp.warehouse_stock >= 1)
我猜要更新的行的条件是:
p.active = 0 OR p.deleted = 1
请参阅Thnks获得回复-这杀死了我的MySQL数据库。也许product表中的300000个条目……我猜linked\u id
已经被索引(如果不是的话,它应该被索引)。另一种选择是将WHERE子句的条件放在ON子句中。但在任何情况下,都不会显示在这些条件下从300000行更新所选行的快速语句。