我有一张类似行的表......比如
PartNo SerialNo Inven_Qty Status
------ -------- --------- ------
001A NULL 1 IN
001A NULL 1 IN
001A NULL 1 IN
001A NULL 1 IN
现在我想动态更新行..我有一个网页,我输入PartNo,OUT的项目的值... ex 2项目是OUT ...我想用Inven_Qty更新2行0并且状态为OUT ....任何人都可以告诉我该怎么做???
提前致谢。
答案 0 :(得分:4)
基于Mikael Eriksson,Oracle:
update YourTable
set Inven_Qty = 0,
Status = 'OUT'
where PartNo = '001A'
and Status = 'IN'
and rownum<=3
(有3件要更新)
答案 1 :(得分:0)
你可以这样做。
UPDATE table_name
SET Status = "OUT", Invent_QTY = 0,
WHERE PartNo = "<part number>" AND SerialNo = <serial number>
答案 2 :(得分:0)
此语法适用于SQL Server。也可以为其他DBMS工作。
update top (2) YourTable
set Inven_Qty = 0,
Status = 'OUT'
where PartNo = '001A' and
Status = 'IN'
另一种可能更容易转换为其他DBMS的方式
with C as
(
select Inven_Qty,
Status,
row_number() over(order by (select 1)) as rn
from @T
where PartNo = '001A' and
Status = 'IN'
)
update C
set Inven_Qty = 0,
Status = 'OUT'
where rn <= 2
答案 3 :(得分:-1)
如果您可以在查询中使用“SerialNo”,那可能会更好,但如果没有,您可以尝试:
update <your table> set Status='OUT', Inven_Qty=0 where rowid in
(select rowid from <your table> where Status=IN and Inven_Qty=1
and PartNo=<part number> where rownum <= <some value>)
但这只有在你认为Inven_Qty为1或0时才有效。如果Inven_Qty可以大于1,我认为你甚至不能用一个查询来做到这一点。
编辑:如果SerialNo为null,则无效。你必须有一些独特的id才能工作。如果你不这样做,你应该添加一个。如果你正在使用oracle,你可以使用ROWID。