Thread

  1. Table aliases in delete statements?

    Keith Parks <emkxp01@mtcc.demon.co.uk> — 1999-12-07T22:38:08Z

    Hi All,
    
    Is there any reason for not allowing table aliases in
    delete statements?
    
    I was trying to delete duplicates from an ascend log
    database when I hit the following "parse" error.
    
    (Perhaps I shouldn't be using a correlated subquery!!)
    
    Simplified example follows.....
    
    
    emkxp01=> create table deltest ( sessionid int, respdate datetime );
    CREATE
    emkxp01=> insert into deltest values ( 1, now() );
    INSERT 58395 1
    emkxp01=> insert into deltest values ( 1, now() );
    INSERT 58396 1
    emkxp01=> insert into deltest values ( 2, now() );
    INSERT 58397 1
    emkxp01=> insert into deltest values ( 2, now() );
    INSERT 58398 1
    emkxp01=> select * from deltest s1 where s1.respdate not in ( select 
    min(s2.respdate) from deltest s2 where s1.sessionid = s2.sessionid);
     sessionid |           respdate           
    -----------+------------------------------
             1 | Tue 07 Dec 22:32:08 1999 GMT
             2 | Tue 07 Dec 22:32:19 1999 GMT
    (2 rows)
    
    emkxp01=> select * from deltest;                                                                                                         
     sessionid |           respdate           
    -----------+------------------------------
             1 | Tue 07 Dec 22:32:01 1999 GMT
             1 | Tue 07 Dec 22:32:08 1999 GMT
             2 | Tue 07 Dec 22:32:14 1999 GMT
             2 | Tue 07 Dec 22:32:19 1999 GMT
    (4 rows)
    
    emkxp01=> delete from deltest s1 where s1.respdate not in ( select 
    min(s2.respdate) from deltest s2 where s1.sessionid = s2.sessionid);
    ERROR:  parser: parse error at or near "s1"
    emkxp01=>