大家帮我看看这个语句怎么写? 我本想这样
INSERT INTO tb1 
SELECT  Username
FROM tb2
WHERE Username not in (select [Username] from tb1)
但是提示错误,大概意思是(select [Username] from tb1)
得到的字符串会被转化为bigint形,而我用的Username是nvarchar有什么好方法来写这个语句不?

解决方案 »

  1.   

    INSERT INTO tb1 (Username )
    SELECT CONVERT(BIGINT,Username )
    FROM tb2 
    WHERE Username not in (select [Username] from tb1) 没弄懂意思???
      

  2.   

    INSERT INTO tb1 (Username )
    SELECT CONVERT(BIGINT,Username )
    FROM tb2 
    WHERE Username not in (select LTRIM([Username]) from tb1) 你TB1中,USERNAME是BIGINT型?
      

  3.   

    转换convert(bigint,usernanme)但这个那个表是什么字段应该说明下吧?
      

  4.   


    两个表都是nvarchar  如果不加where的话是可以查询出来的
      

  5.   

    INSERT INTO tb1 
    SELECT T2.Username 
    FROM tb2 T2
    WHERE NOT EXISTS(SELECT 1 FROM TB1 WHERE USERNAME=T2.USERNAME)这样试试?
      

  6.   


    一样的错误信息:从数据类型 nvarchar 转换为 bigint 时出错
      

  7.   

    不猜了,晕!!!!楼主的数据类型问题,反正有一个是BIGINT类型,
      

  8.   

    INSERT INTO tb1 
    SELECT Username 
    FROM tb2 
    WHERE Username not in (select [Username] from tb1)
    insert into的时候后面写一下字段看看吧
      

  9.   


    SELECT C.NAME,S.NAME FROM SYSCOLUMNS C,systypes S 
    WHERE ID=OBJECT_ID('TB1') AND C.XTYPE=S.XTYPE你查一下看看,看看类型!!!照理应该没问题的,你说都是NVARCHAR,根本就没转BIGINT,
      

  10.   


    这个没问题 我是为了简化问题就把它删掉了 注意! 我说了 不加where运行的话是可以的! 就出错在where上
      

  11.   

    tb1,tb2 就之有1个字段,username?