在我的 prestashop 数据库中,当该产品的数量为 0
时,我尝试更新默认产品属性。我检查 quantity
是否为 0
,然后将 default_on
设置为 null
。然后,仅当 quantity
大于 0
时,我才尝试使用相同的 id_product
设置另一个属性 default_on
。 p>
我有 3 个问题:
- 如何检查特定 id_product 是否只有 1 个结果?如果只有 1 个,我不想更新 default_on。
- 如何检查特定 id_product 的所有结果的数量 = 0?在这种情况下我也不想更新 default_on。
- 如何为所有表制作这个?循环?
START TRANSACTION;
SET @update_id := 0;
UPDATE ps_product_attribute SET default_on = NULL, id_product = (SELECT @update_id := id_product)
WHERE `default_on` = 1 AND `quantity` = 0
LIMIT 1;
UPDATE ps_product_attribute SET default_on = 1
WHERE `id_product` = @update_id AND `quantity` > 0 AND `default_on` IS NULL
LIMIT 1;
COMMIT;
最佳答案
使用自联接来获取具有多个结果的所有产品。
UPDATE ps_product_attribute AS t1
JOIN (
SELECT id_product
FROM ps_product_attribute
GROUP BY id_product
HAVING COUNT(*) > 1
) AS t2 ON t1.id_product = t2.id_product
SET default_on = CASE
WHEN default_on = 1 AND quantity = 0 THEN NULL
WHEN quantity > 0 AND default_on IS NULL THEN 1
ELSE default_on -- leave the rest unchanged
END
关于mysql - 按 id 更新最近更新的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57499589/