问题
There are tow tables. first one is expenses and second one is expenses_items.
There are 2 columns in expenses table as expns_id
and expns_job_type
.
There are 2 columns in expenses_items table as expns_id
(foreign key from expenses table) and group
.
I need to update group
in expenses_items
table and set it's value as development
where value of expns_job_type
in expenses
table like new building
.
I have tried below query. but not worked.
update expenses_items
set expenses_items."group" = 'development'
join expenses ON
expenses_items.expns_id = expenses.expns_id
where expenses.expns_job_type like 'new building'
How could i do this ?
回答1:
You can use subquery in where clause to limit your update request:
UPDATE expenses_items ei SET
group = 'dvelopment'
WHERE EXISTS(
SELECT expns_id FROM expenses e
WHERE e.expns_id = ei.expns.id
AND expns_job_type LIKE 'new building'
)
Also its may be typo, however you using LIKE
clause without using wildcards. If you need exact match - use =
instead of LIKE
回答2:
Oracle uses UPDATE syntax what is differ from that SQL Server support. Please see Oracle documentation for UPDATE and MERGE statements:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_10007.htm
http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9016.htm#i2081218
In your case this should be something like
update expenses_items
set expenses_items."group" = 'development'
where exists (select * from expenses
where expenses_items.expns_id = expenses.expns_id
and expenses.expns_job_type like 'new building'
)
or
merge into expenses_items using
(
select expenses.expns_id
from expenses
where expenses.expns_job_type like 'new building'
) src on (expenses_items.expns_id = src.expns_id)
when matched then
update set expenses_items."group" = 'development'
回答3:
Oracle doesn't support "update with join" syntax. You can do the following instead :
update expenses_items e
set group = 'development'
where exists
(
select 1
from expenses
where expns_id = e.expns_id and expns_job_type like '%new building%'
)
来源:https://stackoverflow.com/questions/22740758/oracle-update-query-with-join