现在有两个数据表表结构一样都有id和data两项,现在想把第一个表的数据查询出来插入第二个表中,查询的第一个表的第一条数据不要只要id+1以下的数据插入第二个表中  请问怎么实现?(譬如表一有四行 在表二中只插入表一后三行)

解决方案 »

  1.   

    insert A (select * from B Where id=id+1)
      

  2.   

    insert into tb2(id,data)
    select id,data from tb1
    where id>1---这个条件你根据实际情况写
      

  3.   

    2楼的我就想问一下这个条件怎么表达 如果第一个id=5就从id=6插入表2  若第一个id=100就从id=101插入表2 
      

  4.   

    with t as(
    select * ,row_number()over(order by id) as px
    from tb1)insert into tb2(id,data)
    select id,data from t
    where px>1 
      

  5.   


    --> 数据库版本:
    --> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
    --> 测试数据:tb1
    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'tb1') 
    AND type in (N'U')) 
    DROP TABLE tb1
    GO---->建表
    create table tb1([id] int,[data] int)
    insert tb1
    select 2,23213 union all
    select 3,12313 union all
    select 4,51531 union all
    select 5,12341
    GO--> 查询结果
    SELECT * FROM tb1--对比
    ;with t as(
    select * ,row_number()over(order by id) as px
    from tb1)select id,data from t
    where px>1 
    --> 删除表格
    --DROP TABLE tb1怎么不行呢?
      

  6.   

    我是sql2000 提示说'row_number' 不是可以识别的 函数名。
      

  7.   

    INSERT INTO b
    SELECT * FROM a WHERE id>(SELECT TOP 1 id FROM a)
      

  8.   

    INSERT INTO b
    SELECT * FROM a WHERE id>(SELECT TOP 1 id FROM a)
     这样写可以不
      

  9.   

    nicedream啊  我觉得可行 但是有个问题就是id是个自增的标识,提示仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表  中为标识列指定显式值。
      

  10.   


    insert into b
    select * from aDELETE FROM b
    WHERE ID IN (SELECT TOP 1 ID FROM b)
      

  11.   

    哈哈 KONGMAJIAN很会变通啊  给了个思路 可以先插入再删除一行 很不错哦 谢了