我正在尝试创建一个 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'”部分的情况下执行此更新语句,但如果可能,我会尽量避免这样做