- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个 SQL 语句,将表的“状态”列中的特定行从“不正常”更新为“正常”,但仅限于具有提供的 ID 和状态的行。
表中的数据(table1.id, table1.status) = [ID1, PENDING], [ID2, NOT OK], [ID3, NOT OK]
ID列表将从java传递到“in()”部分,我只有ID而没有状态数据。请注意,ID1 的状态不是“NOT OK”。
我到目前为止的代码;
UPDATE table1
SET table1.status = 'OK'
WHERE table1.status = 'NOT OK' AND table1.id in ('ID1', 'ID2', 'ID3')
如果括号内的列表包含所有带有“NOT OK”的 ID,则会对括号内的所有 ID 进行更改。 但如果其中一个 ID 包含不同的状态,则不会进行任何更改。
该语句应忽略 ID1,因为其状态不是“不正常”,但仍将 ID2 和 ID3 的状态更改为“正常”。代码如何修复?请注意,由于权限限制,我无法使用“创建表”(甚至是临时表)。
我可以进行两次 SQL 调用;首先按 ID 选择 where status = not OK,然后其次执行此更新语句,而不使用“WHERE table1.status= 'not OK'”部分,但如果可能的话,我会尽量避免这样做
最佳答案
评论有点长。
您的代码完全按照您指定的方式执行:更新同时满足 status
和 id
条件的行。 Here是一个 db<>fiddle 来说明这一点。这个 fiddle 碰巧使用 Postgres,但这并不重要。该代码在任何数据库中的工作方式都是相同的。
我怀疑您在传递 id
时存在错误,状态只是一种困惑。您没有提供足够的信息来确定错误所在。但是您的 SQL 代码正在执行您想要的操作。
关于java - SQL(和 Javax.Persistence.Query.ExecuteQuery)如何将 UPDATE 与 WHERE-IN 和 AND 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62034564/
我是一名优秀的程序员,十分优秀!