insert into B表(name,norm,unit,amount)
select name,norm,unit,amount
from A表 where number= '00000002'如果number='0000002'大于1条记录
就报错错误信息:子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的应该怎么解决,请高手赐教

解决方案 »

  1.   

    --用in
    insert into B表(name,norm,unit,amount) 
    select name,norm,unit,amount 
    from A表 where number in( '00000002' )
      

  2.   

    --用in
    insert into B表(name,norm,unit,amount) 
    select name,norm,unit,amount 
    from A表 where number in( '00000002' )
      

  3.   

    --用in
    insert into B表(name,norm,unit,amount) 
    select name,norm,unit,amount 
    from A表 where number in( select number from 别的表 )
      

  4.   

    B表中有Insert触发器,是因为触发器编写不当引起的。
    可以修改触发器或暂时禁用触发器。
      

  5.   


    insert into B表(name,norm,unit,amount) 
    select name,norm,unit,amount 
    from A表 where number in( select col from tb)
      

  6.   

    错误信息:子查询返回的值多于一个。当子查询跟随在 =、!=、 <、 <=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的 如果number='0000002'大于1条记录 
    就报错 
    说明你的子查询返回的列值个数大于1,不能用=、!=、 <、 <=、>、>= 这些关系运符,用3楼的就行了。
      

  7.   

    如果有link关系,就使用join,先让select语句成功再写insert这样就不会有问题了
      

  8.   

    如果查询的结果是同样的记录,而且B表结构也只有这四个字段, 没有ID标识字段或其他自增字段
    这样还可以正常INSERT吗?