请用最普通的sql语句写出来,不要使用数据库产品的特有函数,T表:(字段:ID,NAME,ADDRESS,PHONE,LOGDATE)
E表:(字段:NAME,ADDRESS,PHONE)
1. 将表T中的字段LOGDATE中为2001-02-11的数据更新为2003-01-01,请写出相应的SQL语句。(该字段类型为日期类型)--注意可能包含多条记录2. 请写出将表T中NAME存在重复的记录都列出来的SQL语句(按NAME排序)3. 请写出题目2中,只保留重复记录的第一条,删除其余记录的SQL语句(即使该表不存在重复记录)4. 请写出将E表中的ADDRESS、PHONE更新到T表中的SQL语句(按NAME相同进行关联)5. 请写出将T表中第3~5行数据列出来的SQL语句 

解决方案 »

  1.   

    1.update t set logdate = to_date('2003-01-01','yyyy-mm-dd') where logdate = to_date('2001-02-11','yyyy-mm-dd');
    2.select * from t where name in (select name from t having count(name) >= 2 group by name)
    3.delete from t where id not in (select max(id) from t group by name)  
    4.update t set address = (select e.address  from e where t.name = e.name)
    ,phone = (select e.phone from e where t.name = e.name)
    where exists (select 1 from t,e where e.name = t.name) 
    5.select * from (select t.*,rownum rn from t) where rn <= 5 and rn >=3没有验证,也不知是否是最普通sql
      

  2.   

    count() ,max() 等都属于数据库自带的函数吧,题目要求是不带这些函数的呢?另外删除重复的记录语句感觉有问题select max(id) from t group by name 按名字分组返回最大的id,而delete from t where id not in 表T中的ID肯定会存在select max(id) from t group by name 的。delete from t where id not in (select max(id) from t group by name)  
      

  3.   

    就改了1楼的2、3,感觉1楼删除重复记录错误的,没有保留重复记录中的一条update t set logdate=to_date('2003-01-01','yyyy-mm-dd') where logdate=to_date('2001-02-11','yyyy-mm-dd');
    select * from t group by name having count(*)>1 order by name;
    delete from t where rowid not in (select min(rowid) from t group by name having count(*)>1);
    update t set address = (select e.address  from e where t.name = e.name)
    ,phone = (select e.phone from e where t.name = e.name)
    where exists (select 1 from t,e where e.name = t.name) ;
    select * from (select t.*,rownum rn from t) where rn between 3 and 5;
      

  4.   

    删除重复记录的语句好像有问题吧,要求是删除重复记录和不重复记录,只保留重复记录的第一条Delete From t Where t.id Not In (Select Max(Id) From t Having count(name) > 1 Group By Name)
      

  5.   

    TO_DATE,ROWNUM(SYBASE,MSSQL对应用TOP)这些都是ORACLE特有的函数,不能用的话第1和第5题不会写
    第2题用DISTINCT就可以了吧,不需要GROUP BY
      

  6.   

    看错了,存在重复只能用GROUP BY HAVING COUNT(*)>=2了
      

  7.   

    count(),avg(),sum(),min(),max()汇总函数都是ORALCE特有的函数,请大家注意有这个条件限制。
      

  8.   

    count(),avg(),sum(),min(),max()这几个都是通用的吧..