head表
code              num
0001       0.0000
0002       3.5600
0003       0.0000
0004       8.9900
0005       0.0000
0006       7.8800
0007       6.7700
0008       0.0000
0009       0.0000line表
code              num1     num2      num3
0001       0.0000 0.0000 0.0000
0002       99.0000 99.0000 99.0000
0003       0.0000 0.0000 0.0000
0004       77.0000 66.0000 55.0000
0005       0.0000 0.0000 0.0000
0006       77.0000 88.0000 44.0000
0007       44.0000 44.0000 55.0000
0008       0.0000 0.0000 0.0000
0009       6.0000 5.0000 1.0000我要同时删除head表num=0.00
并且line表num1=0.00 and num2=0.00 and num3=0.00的情况
head表的code等于line表的codesql语句怎么写?

解决方案 »

  1.   

    delete head where num = 0.00 and code in(select code from line where num1=0.00 and num2=0.00 and num3=0.00)
      

  2.   

    如果想同时删2表 
    介意用触发器
    因为一句SQL没法实现删除2个
      

  3.   

    一个SQL语句。怎么删除两个表。?看看
      

  4.   

    exec('delete a;delete b')外键级联触发器
      

  5.   

    LZ的意思是要同时在两个表里把code相等,并且num都为0的数据删除。
    也就是说,如果用sql先在head表中把code=1的记录删除,接下来line中的code=1的记录就不符合条件了,因为此时,code中已经没有相关记录,也就不符合code相等这一条件了。
    所以,存储过程,触发器都不能解决这个问题。
    可行的是:1,象9楼说的,建立一个外键,并且设置成级联删除,2,在两个表中分别添加一个字段,用来判断是不是符合删除的条件,然后根据这个字段的值来分别进行删除。
    head表
    code              num      del
    0001      0.0000         1
    0002      3.5600         0
    0003      0.0000         1
    line表
    code              num1    num2      num3       del
    0001      0.0000 0.0000 0.0000                  1          
    0002      99.0000 99.0000 99.0000               0
    0003      0.0000 0.0000 0.0000                  1
    然后在两个表中将del=1的记录删除