早上发了一贴,把三张表的数据存到一个DataSet中,这个已经做到,可是uname这个字段中有重复的数据,怎么样能把这些重复数据去掉呢?
解决方案 »
- 列名不存在问题
- 页面的导航条点不了
- 为什么datalist只显示奇数行的数据啊?(求助)
- javascript到底全局变量作用域是什么,为什么在函数中改变了无效??在线等!~急,请知道的人进来回
- asp.net中数据导出到Excel中,如何用代码实现导出数据在Excel中的格式
- 这个问题一天不解决我就睡不着觉!!!
- 有没有例子--自己编写web程序,打开对pdf ,tiff文件,,并且防止别人下载,复制、另存,打印等,
- listbox有没有双击事件
- 什么报表控件可以触发打印事件?
- 请问一下,这二种方法的不同就只在这儿吗?还有没有别的地方的不同
- Base-64 字符串中的无效字符,错误!期待完美的解答
- 同时使用Membership和Session,发现Session很容易丢失,大家一般是怎么解决的?
然后
在遍历的过程中
发现相同的就移除
SqlConnection conn = new SqlConnection("server=.;uid=sa;database=pubs");
SqlDataAdapter da = new SqlDataAdapter("select uname from test", conn);
SqlDataAdapter da1 = new SqlDataAdapter("select uname from test1", conn);
SqlDataAdapter da2 = new SqlDataAdapter("select uname from test2", conn);
DataSet ds = new DataSet();
da.Fill(ds, "one");
da1.Fill(ds, "two");
da2.Fill(ds, "three");
ds.Tables["one"].Merge(ds.Tables["two"]);
ds.Tables["one"].Merge(ds.Tables["three"]);
GridView1.DataSource = ds.Tables["one"];
GridView1.DataBind();
SqlDataAdapter da1 = new SqlDataAdapter("select distinct uname from test1", conn);
SqlDataAdapter da2 = new SqlDataAdapter("select distinct uname from test2", conn);
SqlDataAdapter da1 = new SqlDataAdapter("select uname from test1", conn);
SqlDataAdapter da2 = new SqlDataAdapter("select uname from test2", conn);
查询的时候后面多个group by 字段
这样可以实现
比如 select uname from test group by uname
union
select uname from t2
union
select union from t3union运算进行联合时会自动去掉重复行.
不取重复值。可以用EXISTS那个条件判断下在查询出来。
LZ又说不能使用Sql判断,还请你教我
继续学习
select uname from t1
union
select uname from t2
union
select uname from t3
联合查询后执行数据DataSet
建议还是在数据库做下处理了...不过期待高手来解决....学习ing...
建议还是在数据库做下处理了...不过期待高手来解决....学习ing...
建议还是在数据库做下处理了...不过期待高手来解决....学习ing...
建议还是在数据库做下处理了...不过期待高手来解决....学习ing...
建议还是在数据库做下处理了...不过期待高手来解决....学习ing...
select uname from t1
select uname from t2 where uname not in (select uname from t1)
select uname from t3 where uname not in (select uname from t1) and uname not in (select uname from t2)
datatable.select方法只能指定filter即过滤条件,而不能对 选择列 进行确定以下都是随手敲的,难免手误select id,name from tb where id>1
即,select()方法只能指定 蓝色的部分,不能确定红色的部分.如果是在sql中,可以通过 where 后变通的方法来使 相同的name只取一个.
比如,设id为identity列.select id,name from tb a where not exits(select 1 from tb where name=a.name and id<a.id) --name相同的取最小的id. 或取最大id将<改为>即可
--或是
select id,name from tb a where id in(select top 1 id from tb where name=a.name order by id)
--或是
select id,name from tb a where id=(select max(id) from tb where name=a.name)
--或是
select a.id,a.name from tb a inner join(select max(id) mi from tb group by name ) b where mi=id
--或是
select id,name from tb a where 1=(select count(1) from tb where name=a.name and id<a.id)而在 datatable.select方法中,如果按 1,2,3,这几种SQL语句的写法, datatable无法提供子查询中供比较的表
所以是不行的.你如果非要去掉重复name,那么方法可以是:
1,在填充datatable时,从数据库端直接取以下的行集
select name from t1
union select name from t2
union select name from t32,在将三个dt合并时,不使用merge方法, 而采用逐行importrow的方法.
DataRow[] rows2 = dt2.Select();
DataRow[] rows3 = dt3.Select();
for(int i=0;i<rows2.length;i++)
{
//每个行逐列比较,你这里只比较name列,那么
DataRow[] rows = dt.Select("name='" + rows2[i]["name"].ToString());
if(rows.length=0) dt.ImportRow(rows2[i]);
}for(int i=0;i<rows3.length;i++)
{
//每个行逐列比较,你这里只比较name列,那么
DataRow[] rows = dt.Select("name='" + rows3[i]["name"].ToString());
if(rows.length=0) dt.ImportRow(rows3[i]);
}
DataRow[] rows3 = ds.Tables["dldb"].Select();
for (int i = 0; i < rows2.Length; i++)
{
//每个行逐列比较,你这里只比较name列,那么
DataRow[] rows = ds.Tables["rsdb"].Select("TelNumber='" + rows2[i]["TelNumber"].ToString());
if (rows.Length == 0) ds.Tables["jqw"].ImportRow(rows2[i]);
}
我这样写的,红色部分提示错误:表达式包含无效的字符串常量: '13591372298。
DataRow[] rows = ds.Tables["rsdb"].Select("TelNumber='" + rows2[i]["TelNumber"].ToString());
这行出错了。感谢这么多位高手的帮助,问题解决后,我会把贴子加分的
==================
不好意思,有些事情当误了,我试过了,可以去掉重复信息,但是有重复的就全给去掉了,比如
我在A表里有:aaa
B表里:bbb
C表里:bbb
按照你那个方法就只显示aaa了,我想显示的是aaa,bbb
你查一下语句,看哪里变量有没有写错.