我想编写一个更新SQL语句,但是这个语句的一个conidtion是select SQL语句的结果,我还想返回select SQL语句的结果。
像这样:update ... set ... where id = (select id from ...)
我想返回id的值。
有人知道我该怎么办?
提前致谢!
答案 0 :(得分:2)
我不相信在一个声明中这是可能的。更新然后查询(选择)新值,或先查询值,然后提交更新。
替代方案是数据库上的存储过程,它执行多个查询并为您返回结果。
答案 1 :(得分:0)
这在我所知道的所有Java数据库框架中都是不可能的。您可能需要将查询和Java更新分开。
答案 2 :(得分:0)
我没有看到在update语句的WHERE子句中使用subselect有任何问题。
对于第二个请求,获取id的值,我知道这在DB2中是可能的,也许其他人也实现了这个语法:
SELECT id FROM FINAL TABLE (
update ... set ... where id = (select id from ...)
)
这也适用于INSERT和DELETE语句。 (参见documentation。)
答案 3 :(得分:0)
更新语句不会返回更新的数据集。在这种情况下,选择将是一个无法直接访问的子选择。
因此,您必须至少使用两个查询: