现有两个表:
表名: ik_stuUsers
表名含义: 学生用户表
字段名称 字段类型(长度) 字段含义    备注
Uid INT         主键       非空;自增;
StuNO STRING(12) 学号    非空;
IDNo STRING(18) 身份证号    非空;
classId STRING(10) 班级编号    非空;
state INT         状态标记   1为正常,0为删除表名: ik_class
表名含义: 学生班级表(二期)
字段名称 字段类型(长度) 字段含义      备注
Uid INT         主键     非空;自增;
classId STRING(10) 班号      非空;
depId int         院系编号      非空;
state INT         状态标记     1为正常,0为删除现在要从ik_stuUsers中取出classId和state字段的值插入ik_class中,然后depId的值为classId的前两位。SQL语句要怎么写咧?SQLC#

解决方案 »

  1.   

    insert into ik_class (select classId,substr(classId,0,2),state from ik_stuUsers)
      

  2.   

    不应该是这样吗:insert into ik_class(classId,depId,state) select classId,substr(classId,0,2),state from ik_stuUsers
      

  3.   

    不应该是这样吗:insert into ik_class(classId,depId,state) select classId,substr(classId,0,2),state from ik_stuUsers
    insert into ik_class(classId,depId,state) values(select classId,substr(classId,0,2),state from ik_stuUsers)
      

  4.   


    运行时显示:关键字 'select' 附近有语法错误。
    'substr' 不是可以识别的 内置函数名称。 
      

  5.   

    上面那个是手写的,下面这个通过测试。
    insert into [dbo].[ik_class](classId,depId,[state]) select classId,substring(classId,0,2),[state] from ik_stuUsers
      

  6.   

    substring(classId,1,2) --是1,sorry
      

  7.   

    有一个问题,就是我这样向ik_class插入classId时,我发现就是同一个classId,ik_stuUser有多少个,就导入ik_class多少条记录,结果导致最后ik_class有很多行是一样的,怎么避免这种情况呢