SQL 在特定条件下更新字段

SQL UPDATE Field under certain conditon

我有一个 table 这样的:

product_number    active    parent_id
119183            1         0x975c4deb281d4befbe679dacb4a0fda0
119182            1         0x975c4deb281d4befbe679dacb4a0fda0
119181            1         0x975c4deb281d4befbe679dacb4a0fda0
119180            1         0x975c4deb281d4befbe679dacb4a0fda0
ATR-38496         1         0x975c4deb281d4befbe679dacb4a0fda0
119179            1         0x975c4deb281d4befbe679dacb4a0fda0
ATR-38473         1         0x0002252627424031b2968e02b78dcf0c

我想将 table 更新为这个结果:

product_number    active    parent_id
119183            1         0x975c4deb281d4befbe679dacb4a0fda0
119182            1         0x975c4deb281d4befbe679dacb4a0fda0
119181            1         0x975c4deb281d4befbe679dacb4a0fda0
119180            1         0x975c4deb281d4befbe679dacb4a0fda0
ATR-38496         0         0x975c4deb281d4befbe679dacb4a0fda0
119179            1         0x975c4deb281d4befbe679dacb4a0fda0
ATR-38473         1         0x0002252627424031b2968e02b78dcf0c

重要的是要知道,这个 table 有多种产品,每个产品可能有一些变体。
一个产品及其对应的变体在相同的 parent_id 下列出,而每个产品和变体集都有不同的 parent_id.
主产品需要active设置为0,可以通过前缀“ATR-”在product_number.
上识别 遗憾的是,我无法想出一个适用于此问题的 sql 语句。

编辑:我有一些产品是独立产品,所以在同一个 parent_id 下没有多个产品,不应设置为 active=0

看来你需要在

UPDATE table t1
  JOIN table t2 USING (parent_id)
SET t1.active = 0 
WHERE LEFT(t1.product_number, 4) = 'ATR-'
  AND t2.product_number <> t1.product_number;