我想执行一个具有如下表的查询:
Order_no. Order_string Order_Int Order_status
ABE001 ABE 1 0
ABE002 ABE 2 0
ABE003 ABE 3 0
ABE004 ABE 4 0
ABE005 ABE 5 0
ABE006 ABE 6 0
ABE007 ABE 7 0
ABE008 ABE 8 0
ABE009 ABE 9 0
ABE010 ABE 10 0
我想通过以下方式查询数据库:
1> 我收到了一系列示例的请求:order_no: ABE003 - ABE007
2>首先我要检查range中提到的所有order_no是否存在。
3> 其次,我需要检查是否存在 order_status 必须为 0。
4> 如果条件 2 和 3 满足则 UPDATE order_status 为 1。
这个怎么查询?
最佳答案
也许它并不完美,我现在无法测试,但我会这样解决:
UPDATE table
SET Order_Status =
CASE
WHEN EXISTS(SELECT Order_no FROM Table WHERE Order_No BETWEEN "x" AND "y" AND OrderStatus=0) THEN 1
ELSE 0
END
-- 根据要求编辑 我重复一遍我无法测试查询是否正确但检查并尝试理解背后的逻辑并检查 postgres documentation .
/*Checking if exists*/
declare @PackageExists int
declare @Package_1 nvarchar(45)
declare @Package_2 nvarchar(45)
SET @PackageExists =
CASE WHEN EXISTS(select * from table where Order_no BETWEEN @Pck_1 And @Pck_2 and Order_Status=0) THEN 1
ELSE 0
/*Update table*/
UPDATE table
SET Order_status =
CASE WHEN @PackageExists=1 THEN 1 ELSE 0
END
关于sql - Postgres : UPDATE multiple rows WHERE columnName has int in given range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47568633/