SQL Server 2000中有两个表:t1、t2,主键分别是name, type和name, type, year,用括号括起来了:
t1: (name, type), area, data
t2: (name, type, year), data我现在要删除t2中name和type对应的t1中的area为5的数据,写了SQL如下:
delete from t2 where (name, type) in (select name, type from t1 where area = 5)可是SQL Server 2000报告语法错误,同样的SQL在SQL Server 2005下却正常,在SQL Server 2000中如何解决?如果改SQL语句,不要用数据库本身的函数。

解决方案 »

  1.   

    delete t2
    from t2
    inner join t1
    on t2.name = t1.name
    and t2.type = t1.type
    where t1.area = 5
      

  2.   

    varchar类型的话可以:delete from t2 where name+type in (select name+type from t1 where area = 5)否则需先去掉空格
      

  3.   

    呵呵,这就是SQL 2005与2000一些用法上的差别
      

  4.   

    不是varchar,类型不确定,随时会改。
      

  5.   

    xluzhong(Ralph) 的方法我去试试看~
      

  6.   

    happydreamer(重返csdn) ( ) 信誉:209    Blog  2006-11-28 15:53:33  得分: 0  
     
     
       varchar类型的话可以:delete from t2 where name+type in (select name+type from t1 where area = 5)否则需先去掉空格
      
     
    -----------------------------------------------------------------------------varchar的话也不行啊,如果name和type分别:
    name:abcd
    type:ef
    和这样一种情况:
    name:ab
    type:cdef
    两种情况name+type都是abcdef啊,可是却不是同一条记录。