gpt4 book ai didi

java - SQL(和 Javax.Persistence.Query.ExecuteQuery)如何将 UPDATE 与 WHERE-IN 和 AND 一起使用

转载 作者:行者123 更新时间:2023-12-01 16:31:15 24 4
gpt4 key购买 nike

我正在尝试创建一个 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'”部分,但如果可能的话,我会尽量避免这样做

最佳答案

评论有点长。

您的代码完全按照您指定的方式执行:更新同时满足 statusid 条件的行。 Here是一个 db<>fiddle 来说明这一点。这个 fiddle 碰巧使用 Postgres,但这并不重要。该代码在任何数据库中的工作方式都是相同的。

我怀疑您在传递 id 时存在错误,状态只是一种困惑。您没有提供足够的信息来确定错误所在。但是您的 SQL 代码正在执行您想要的操作。

关于java - SQL(和 Javax.Persistence.Query.ExecuteQuery)如何将 UPDATE 与 WHERE-IN 和 AND 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62034564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com