【问题标题】:Updating the latest row for a user in an Oracle 11g database?更新 Oracle 11g 数据库中用户的最新行?
【发布时间】:2014-09-08 11:43:55
【问题描述】:

我的代码在这个sqlFiddle

创建表格

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 很陌生,并认为这会起作用。

【问题讨论】:

    标签: sql oracle11g sql-update


    【解决方案1】:

    你不需要from:

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

    【讨论】:

      【解决方案2】:

      去掉from子句,你已经在顶部了:

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

      【讨论】:

        猜你喜欢
        • 2017-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-07
        • 1970-01-01
        相关资源
        最近更新 更多