如果不存在则更新,如果存在则检查代码是否与1不同并更新

时间:2016-08-29 09:56:17

标签: sql

我正在尝试构建一个SQL命令来更新我的表

更新myProduct中的行(如果表order中不存在,或者如果存在,请检查表order,如果代码为!= 1则更新

UPDATE myProduct
SET statut = 3
WHERE  
    myProduct_id NOT IN (SELECT myProduct_id
                         FROM order
                         WHERE code != 1
                           AND myProduct.myProduct_id = order.myProduct_id)
    OR NOT EXISTS IN (SELECT myProduct_id FROM order)

提前谢谢

3 个答案:

答案 0 :(得分:0)

使用以下代码..

UPDATE p
    SET statut = 3
FROM myProduct p
WHERE NOT EXISTS 
        (SELECT 1
        FROM order o
        WHERE code != 1
        AND p.myProduct_id = 0.myProduct_id)

答案 1 :(得分:0)

我认为逻辑是:更新order中相应行不为1(或不存在)的所有行。

如果是这样,你可以用一个更简单的陈述来做到这一点:

UPDATE myProduct p
    SET statut = 3
WHERE NOT EXISTS (SELECT 1
                  FROM orders o
                  WHERE o.code = 1 AND p.myProduct_id = o.myProduct_id);

您没有指定数据库,但以上是标准SQL。

注意:order对于表来说是一个非常糟糕的名称,因为它是一个SQL关键字。这就是为什么我使用orders代替order

答案 2 :(得分:0)

更新myProduct SET statut = 3 什么不存在(从订单中选择1 WHERE代码!= 1 AND myProduct.myProduct_id = order.myProduct_id)