2014-07-17 52 views
0

我的代碼是在這sqlFiddle在Oracle 11g數據庫中更新用戶的最新行?

創建表

create table my_table (pk number, created date, user_name varchar2(200), start_date date); 

insert into my_table (pk, created,user_name) values (1, sysdate-1, 'bob'); 
insert into my_table (pk, created,user_name) values (2, sysdate-2, 'frank'); 
insert into my_table (pk, created,user_name) values (3, sysdate,'bob'); 
insert into my_table (pk, created,user_name) values (4, sysdate,'frank'); 

更新:

update my_table 
set start_date = sysdate 
    from my_table 
where pk = (select max(pk) from my_table where user_name = 'bob'); 

SQLFiddle給了我這個錯誤:

ORA-00933: SQL command not properly ended : update my_table set start_date = sysdate from my_table where pk = (select max(pk) from my_table where user_name = 'bob') 

但我敢肯定,我有一個分號出現在右地點。

什麼給?我對SQL很陌生,並認爲這會起作用。

回答

1

取出from條款,你已經擁有它的頂部:

update my_table 
set start_date = sysdate 
where pk = (select max(pk) from my_table where user_name = 'bob'); 
1

你不需要from

update my_table 
    set start_date = sysdate 
    where pk = (select max(pk) from my_table where user_name = 'bob'); 
相關問題