出毛病的语句如下,在同一环境下,比它长很多的都能正常执行。
insert into zffsd select ' 490以下' 段次,(select count(*) from mcb where 班级=15 and 总分>0 and 总分<490) 计15,(select count(*) from mcb where 班级=15 and 总分>0) 累15,(select count(*) from mcb where 班级=3 and 总分>0 and 总分<490) 计3,(select count(*) from mcb where 班级=3 and 总分>0) 累3,(select count(*) from mcb where 班级=6 and 总分>0 and 总分<490) 计6,(select count(*) from mcb where 班级=6 and 总分>0) 累6,(select count(*) from mcb where 班级=9 and 总分>0 and 总分<490) 计9,(select count(*) from mcb where 班级=9 and 总分>0) 累9,(select count(*) from mcb where 班级=12 and 总分>0 and 总分<490) 计12,(select count(*) from mcb where 班级=12 and 总分>0) 累12,(select count(*) from mcb where 班级=7 and 总分>0 and 总分<490) 计7,(select count(*) from mcb where 班级=7 and 总分>0) 累7,(select count(*) from mcb where 班级=18 and 总分>0 and 总分<490) 计18,(select count(*) from mcb where 班级=18 and 总分>0) 累18,(select count(*) from mcb where 班级=10 and 总分>0 and 总分<490) 计10,(select count(*) from mcb where 班级=10 and 总分>0) 累10,(select count(*) from mcb where 班级=1 and 总分>0 and 总分<490) 计1,(select count(*) from mcb where 班级=1 and 总分>0) 累1,(select count(*) from mcb where 班级=4 and 总分>0 and 总分<490) 计4,(select count(*) from mcb where 班级=4 and 总分>0) 累4,(select count(*) from mcb where 班级=19 and 总分>0 and 总分<490) 计19,(select count(*) from mcb where 班级=19 and 总分>0) 累19,(select count(*) from mcb where 班级=2 and 总分>0 and 总分<490) 计2,(select count(*) from mcb where 班级=2 and 总分>0) 累2,(select count(*) from mcb where 班级=13 and 总分>0 and 总分<490) 计13,(select count(*) from mcb where 班级=13 and 总分>0) 累13,(select count(*) from mcb where 班级=5 and 总分>0 and 总分<490) 计5,(select count(*) from mcb where 班级=5 and 总分>0) 累5,(select count(*) from mcb where 班级=16 and 总分>0 and 总分<490) 计16,(select count(*) from mcb where 班级=16 and 总分>0) 累16,(select count(*) from mcb where 班级=11 and 总分>0 and 总分<490) 计11,(select count(*) from mcb where 班级=11 and 总分>0) 累11,(select count(*) from mcb where 班级=14 and 总分>0 and 总分<490) 计14,(select count(*) from mcb where 班级=14 and 总分>0) 累14,(select count(*) from mcb where 班级=17 and 总分>0 and 总分<490) 计17,(select count(*) from mcb where 班级=17 and 总分>0) 累17,(select count(*) from mcb where 班级=20 and 总分>0 and 总分<490) 计20,(select count(*) from mcb where 班级=20 and 总分>0) 累20,(select count(*) from mcb where 班级=8 and 总分>0 and 总分<490) 计8,(select count(*) from mcb where 班级=8 and 总分>0) 累8,(select count(*) from mcb where 总分>0 and 总分<490) 总计,(select count(*) from mcb where 总分>0) 总累出错信息如下:
消息 8152,级别 16,状态 14,第 1 行
将截断字符串或二进制数据。
语句已终止。
另一个内容类似的语句比上面的的长许多,但能正常执行,代码如下:
insert into zffsd select '490' 段次,(select count(*) from mcb where 班级=15 and 总分>=490 and 总分<500) 计15,(select count(*) from mcb where 班级=15 and 总分>=490) 累15,(select count(*) from mcb where 班级=3 and 总分>=490 and 总分<500) 计3,(select count(*) from mcb where 班级=3 and 总分>=490) 累3,(select count(*) from mcb where 班级=6 and 总分>=490 and 总分<500) 计6,(select count(*) from mcb where 班级=6 and 总分>=490) 累6,(select count(*) from mcb where 班级=9 and 总分>=490 and 总分<500) 计9,(select count(*) from mcb where 班级=9 and 总分>=490) 累9,(select count(*) from mcb where 班级=12 and 总分>=490 and 总分<500) 计12,(select count(*) from mcb where 班级=12 and 总分>=490) 累12,(select count(*) from mcb where 班级=7 and 总分>=490 and 总分<500) 计7,(select count(*) from mcb where 班级=7 and 总分>=490) 累7,(select count(*) from mcb where 班级=18 and 总分>=490 and 总分<500) 计18,(select count(*) from mcb where 班级=18 and 总分>=490) 累18,(select count(*) from mcb where 班级=10 and 总分>=490 and 总分<500) 计10,(select count(*) from mcb where 班级=10 and 总分>=490) 累10,(select count(*) from mcb where 班级=1 and 总分>=490 and 总分<500) 计1,(select count(*) from mcb where 班级=1 and 总分>=490) 累1,(select count(*) from mcb where 班级=4 and 总分>=490 and 总分<500) 计4,(select count(*) from mcb where 班级=4 and 总分>=490) 累4,(select count(*) from mcb where 班级=19 and 总分>=490 and 总分<500) 计19,(select count(*) from mcb where 班级=19 and 总分>=490) 累19,(select count(*) from mcb where 班级=2 and 总分>=490 and 总分<500) 计2,(select count(*) from mcb where 班级=2 and 总分>=490) 累2,(select count(*) from mcb where 班级=13 and 总分>=490 and 总分<500) 计13,(select count(*) from mcb where 班级=13 and 总分>=490) 累13,(select count(*) from mcb where 班级=5 and 总分>=490 and 总分<500) 计5,(select count(*) from mcb where 班级=5 and 总分>=490) 累5,(select count(*) from mcb where 班级=16 and 总分>=490 and 总分<500) 计16,(select count(*) from mcb where 班级=16 and 总分>=490) 累16,(select count(*) from mcb where 班级=11 and 总分>=490 and 总分<500) 计11,(select count(*) from mcb where 班级=11 and 总分>=490) 累11,(select count(*) from mcb where 班级=14 and 总分>=490 and 总分<500) 计14,(select count(*) from mcb where 班级=14 and 总分>=490) 累14,(select count(*) from mcb where 班级=17 and 总分>=490 and 总分<500) 计17,(select count(*) from mcb where 班级=17 and 总分>=490) 累17,(select count(*) from mcb where 班级=20 and 总分>=490 and 总分<500) 计20,(select count(*) from mcb where 班级=20 and 总分>=490) 累20,(select count(*) from mcb where 班级=8 and 总分>=490 and 总分<500) 计8,(select count(*) from mcb where 班级=8 and 总分>=490) 累8,(select count(*) from mcb where 总分>=490 and 总分<500) 总计,(select count(*) from mcb where 总分>=490) 总累(1 行受影响)

解决方案 »

  1.   

    与语句貌似没多大关系
    你检查下zffsd 这个表的各个字段的长度
      

  2.   

    这不是sql语句的长短,而是你插入的字段的值超出了那个字段定义的长度,
    select ' 490以下' 段次select '490' 段次比如说可能就是插入这个字段时引起的,
      

  3.   

    --insert into zffsd這段註釋,看一下兩個結果集是否一致
      

  4.   

    楼主帖子的语句并不错.但这样写法实在是令人叹为观止.估计如果写成 case when 语句的话,比这效率要高.
    insert into zffsd 
    select ' 490以下' 段次,
    (select count(*) from mcb where 班级=15 and 总分>0 and 总分<490) 计15,
    (select count(*) from mcb where 班级=15 and 总分>0) 累15,
    (select count(*) from mcb where 班级=3 and 总分>0 and 总分<490) 计3,
    (select count(*) from mcb where 班级=3 and 总分>0) 累3,
    (select count(*) from mcb where 班级=6 and 总分>0 and 总分<490) 计6,
    (select count(*) from mcb where 班级=6 and 总分>0) 累6,
    (select count(*) from mcb where 班级=9 and 总分>0 and 总分<490) 计9,
    (select count(*) from mcb where 班级=9 and 总分>0) 累9,
    (select count(*) from mcb where 班级=12 and 总分>0 and 总分<490) 计12,
    (select count(*) from mcb where 班级=12 and 总分>0) 累12,
    (select count(*) from mcb where 班级=7 and 总分>0 and 总分<490) 计7,
    (select count(*) from mcb where 班级=7 and 总分>0) 累7,
    (select count(*) from mcb where 班级=18 and 总分>0 and 总分<490) 计18,
    (select count(*) from mcb where 班级=18 and 总分>0) 累18,
    (select count(*) from mcb where 班级=10 and 总分>0 and 总分<490) 计10,
    (select count(*) from mcb where 班级=10 and 总分>0) 累10,
    (select count(*) from mcb where 班级=1 and 总分>0 and 总分<490) 计1,
    (select count(*) from mcb where 班级=1 and 总分>0) 累1,
    (select count(*) from mcb where 班级=4 and 总分>0 and 总分<490) 计4,
    (select count(*) from mcb where 班级=4 and 总分>0) 累4,
    (select count(*) from mcb where 班级=19 and 总分>0 and 总分<490) 计19,
    (select count(*) from mcb where 班级=19 and 总分>0) 累19,
    (select count(*) from mcb where 班级=2 and 总分>0 and 总分<490) 计2,
    (select count(*) from mcb where 班级=2 and 总分>0) 累2,
    (select count(*) from mcb where 班级=13 and 总分>0 and 总分<490) 计13,
    (select count(*) from mcb where 班级=13 and 总分>0) 累13,
    (select count(*) from mcb where 班级=5 and 总分>0 and 总分<490) 计5,
    (select count(*) from mcb where 班级=5 and 总分>0) 累5,
    (select count(*) from mcb where 班级=16 and 总分>0 and 总分<490) 计16,
    (select count(*) from mcb where 班级=16 and 总分>0) 累16,
    (select count(*) from mcb where 班级=11 and 总分>0 and 总分<490) 计11,
    (select count(*) from mcb where 班级=11 and 总分>0) 累11,
    (select count(*) from mcb where 班级=14 and 总分>0 and 总分<490) 计14,
    (select count(*) from mcb where 班级=14 and 总分>0) 累14,
    (select count(*) from mcb where 班级=17 and 总分>0 and 总分<490) 计17,
    (select count(*) from mcb where 班级=17 and 总分>0) 累17,
    (select count(*) from mcb where 班级=20 and 总分>0 and 总分<490) 计20,
    (select count(*) from mcb where 班级=20 and 总分>0) 累20,
    (select count(*) from mcb where 班级=8 and 总分>0 and 总分<490) 计8,
    (select count(*) from mcb where 班级=8 and 总分>0) 累8,
    (select count(*) from mcb where 总分>0 and 总分<490) 总计,
    (select count(*) from mcb where 总分>0) 总累改为:
    insert into zffsd 
    select ' 490以下' 段次,
    sum(case when 班级=15 and 总分<490 then 1 else 0 end) as 计15,
    sum(case when 班级=15 then 1 else 0 end) as 累15,
    ......
    from mcb where 总分>0
      

  5.   

    前面那一堆的分班级的完全可以用两个GROUP BY来查询,最后再拼接起来就是了。
      

  6.   

    目标表的字段长度比select要插入的数据长度要短,检查一下目标表的字段长度。