INSERT   INTO   zzzoneina   
select * from   rqout R
where not exists (select 1 from zzzoneina Z where gh=R.gh and gzk=R.gzk and zcdh=R.zcdh)

解决方案 »

  1.   

    除了一楼的方法,一般下面的也行.
    insert into zzzoneina
    select * from rqout where cast(gh) + ',' + cast(gzk as varchar) + ',' + cast(zcdh as varchar) not in
    (select cast(gh) + ',' + cast(gzk as varchar) + ',' + cast(zcdh as varchar) from zzzoneina)
      

  2.   

    我不心把公司10月份的数据给删掉了?
    你应该有时间字段.
    这样也可以.insert into zzzoneina select * from rqout where convert(varchar(7),时间字段,120) = '2007-10'
      

  3.   

    Select的字段数量与要插入的表的字段数量不一致导致这个错误的。
      

  4.   

    1、insert into语句后指定目标表的字段列表
    2、保证目标字段个数和源字段个数相同,并且顺序相同
      

  5.   

    非常感謝各位兄台的幫助,我先試試看,如果可以,馬上給分!
    另外,我還想請問一個問題.這也是我造成這次錯誤的原因.這個數據庫設計的時候,日期的字段用varchar的類型.我刪除數據時用的命令如下:
    delete from zzzoneina where rq_out<='2007/6/30'.
    結果把2007年10月份的數據給刪掉了,所以我想可能是我的命令用錯了,但是錯在哪裡?小弟真的就不知道了,還請各位大哥賜教......
      

  6.   

    插入表里面的字段和顺序要跟select 后面的字段和顺序要一致!
      

  7.   

    非常感謝各位兄台的幫助,我先試試看,如果可以,馬上給分! 
    另外,我還想請問一個問題.這也是我造成這次錯誤的原因.這個數據庫設計的時候,日期的字段用varchar的類型.我刪除數據時用的命令如下: 
    delete   from   zzzoneina   where   rq_out <= '2007/6/30 '. 
    結果把2007年10月份的數據給刪掉了,所以我想可能是我的命令用錯了,但是錯在哪裡?小弟真的就不知道了,還請各位大哥賜教......对比看看下面的结果!!!
    select 1 where convert(varchar(10),'2007/10/30',110)<='2007/6/30'
    select 1 where convert(varchar(10),'2007/10/30',110)<='2007/06/30'
      

  8.   


    declare @a varchar(10)
    declare @b varchar(10)
    select @a = '2007/10/15',@b='2007/6/30'if @a < @b
    print '小于'
    else 
    print '大于'
    --结果
    /*
    小于
    */--因为是按字符进行比较,当比较到第6个字符时,会认为'1'比'6'小,所以@a比@b小
    --可以转换为日期型再比较
    if cast(@a as datetime) < cast(@b as datetime)
    print '小于'
    else 
    print '大于'
    --结果
    /*
    大于
    */
      

  9.   

    不好意思,我写错了~~~我是在测试楼主是如何保存的时间字符串的~~~呵呵~忘记删除了
    select   1   where    '2007/10/30 ' <= '2007/6/30 ' select   1   where    '2007/10/30 '  <= '2007/06/30 '
    就是楼上的意思啦~~~
      

  10.   

    与君共勉兄,
    妳的解釋我終於明白了,也就是說我要刪除的結果並不是真正按照日期來做的.也就是說只要將rq_out這個字段的類型有varchar類型轉化為datetime類型就沒有問題了.是這樣的嗎?
    記得還有一個日期函數datediff().但是不大會用.好像用這個也可以達到目的.例如要查詢從2006/10/1~2007/10/1的所有數據,不知哪位仁兄可以講解一二......
      

  11.   

    多謝以下各位的幫助,問題終於解決了:
    dobear_0922,dawugui,gahade,結貼給分.
    同時也感謝其他朋友的支持!