On 12/16/11 1:42 PM, JulioSerje wrote:
Is there any way to implement an update using a JOIN? The reference manual
only allows for one table to be updated:
UPDATE table-Name [[AS] correlation-Name]
SET column-Name = Value
[ , column-Name = Value} ]*
[WHERE clause]
We have an application where need to run many queries like:
update t1 set t1.a=t2.b, t1.c=t2.d,...t1.x=(t2.a+t2.b/t2.y)
from Table1 t1 join Table2 t2 on t1.k=t2.k
where t1.x=1 and t2.y=2
We offer support on our app to most data platforms (Oracle, MySql,
SQLServer, PostgreSQL, SQLite, even Access..) and in all of them there is a
way of doing this...
Is this something missing in Derby?
Any ideas highly appreciated.
Hi Julio,
UPDATE...FROM is a useful statement which appears in many SQL dialects.
However, it does not appear in the standard ANSI/ISO SQL dialect which
Derby implements, not even in the recently published 2011 version of the
standard dialect.
A standard approach to updating a column from a join is to use
subqueries in the SET clause. E.g., something like this:
update t1 set a = ( select t2.a from t1, t2 where t1.b = t2.b );
Hope this helps,
-Rick