我有一个给定结构的表,现在我想写一个查询,将2 xx产品从状态1转移到状态2.子代码目前与我无关.
master_code| child_code | status_code
-----------|------------|------------
xx | xx1 | 1
xx | xx2 | 1
xx | xx3 | 1
xx | xx4 | 2
xx | xx5 | 2
yy | yy1 | 3
yy | yy2 | 2
zz | zz1 | 1
zz | zz2 | 1
Run Code Online (Sandbox Code Playgroud)
我已经实施了基本检查,当我使用时
update only product_child
set product_status=1
where product_status=2
Run Code Online (Sandbox Code Playgroud)
所有三个xx都有代码2,我想控制它,我期待只有一个xx将通过此命令获得代码更改
Joh*_*n D 21
如果你不关心哪一行得到更新,我会非常警惕(请为表添加一个PK),然后你可以使用类似下面的内容:
UPDATE
product_child
SET
product_status = 1
WHERE
CTID IN ( SELECT CTID FROM product_child WHERE product_status = 2 and master_code = 'xx' LIMIT 1 )
Run Code Online (Sandbox Code Playgroud)
CTID是唯一的行标识符 - 通过将子选择限制为1个记录,我们返回一个对应于满足WHERE子句的行的CTID.
我找到了一个方法
update only product_child
set product_status =1
where product_child_code in (select product_child_code
from product_child
where product_code = get_product_code('Baby Crib')
and product_status = 2
limit 5)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33468 次 |
| 最近记录: |