当前位置: 代码迷 >> C# >> dataset两个表合并有关问题-新手提问请赐教。
  详细解决方案

dataset两个表合并有关问题-新手提问请赐教。

热度:37   发布时间:2016-05-05 03:47:14.0
dataset两个表合并问题-新手提问请赐教。。。
我从数据库查询出两个结构相同的表table1,table2,一个取前10行,一个取后10行,想把这两个表合并成table3,并把table1和table2的值复制给table3,。这是我写的代码,查询了没数据。请大家帮忙看看。。。
            cn.Open();
            DataSet ds = new DataSet();
            SqlDataAdapter sda1 = new SqlDataAdapter("select top 10 * from code order by i_id ", cn);
            SqlDataAdapter sda2 = new SqlDataAdapter("select top 10 * from code order by i_id desc ", cn);                        
            sda1.Fill(ds, "table1");
            sda2.Fill(ds, "table2");
            DataTable tb1 = new DataTable("table3");
            ds.Tables.Add(tb1);
            tb1 = ds.Tables["table1"].Clone();
            object[] obj = new object[tb1.Columns.Count];
            for (int i = 0; i < ds.Tables["table1"].Rows.Count; i++)
            {
                ds.Tables["table1"].Rows[i].ItemArray.CopyTo(obj, 0);
                tb1.Rows.Add(obj);
            }                 
            dataGridView1.DataSource=ds.Tables["table3"];                  
                  
            cn.Close();

------解决思路----------------------
datatable.Merge(datatable)
------解决思路----------------------
直接用Merge方法就可以了。

------解决思路----------------------
你的sql语句改成存储过程,直接得到table3不行么?!

create procedure ptest
as
begin
select top 10 * into #t1 from zw_yingyez order by i_feeid 
select top 10 * into #t2 from zw_yingyez order by i_feeid desc 

select * from #t1
union all
select * from #t2

drop table #t1
drop table #t2
end

------解决思路----------------------
union一句的事情,干嘛还要搞个临时表呢

引用:
你的sql语句改成存储过程,直接得到table3不行么?!

create procedure ptest
as
begin
select top 10 * into #t1 from zw_yingyez order by i_feeid 
select top 10 * into #t2 from zw_yingyez order by i_feeid desc 

select * from #t1
union all
select * from #t2

drop table #t1
drop table #t2
end

------解决思路----------------------
引用:
Quote: 引用:

union一句的事情,干嘛还要搞个临时表呢

Quote: 引用:

你的sql语句改成存储过程,直接得到table3不行么?!

create procedure ptest
as
begin
select top 10 * into #t1 from zw_yingyez order by i_feeid 
select top 10 * into #t2 from zw_yingyez order by i_feeid desc 

select * from #t1
union all
select * from #t2

drop table #t1
drop table #t2
end

哥,两条语句都有order by,你直接union试试

好吧,你赢了,除非他要查Top,否则还真无法将OrderBy放在一起查询
  相关解决方案