三层开发中遇到的sql语句问题(去重复数据)

skyjoy2006 2008-12-28 08:33:45
Bhouse为操作该数据表的Bll层对象,怎么样去重复(后两个datalist中的数据)
DataSet ds1 = Bhouse.GetList(" top 15 *", "pass='1' and kind='4'", " lastdate desc");
DLnewcs_1.DataSource = ds1.Tables[0].DefaultView;
DLnewcs_1.DataBind();//注:该datalist绑定数据表中的第1-15条数据

DataSet ds2 = Bhouse.GetList(" top 15 *", "pass='1' and kind='4'", " lastdate desc");
DLnewcs_2.DataSource = ds2.Tables[0].DefaultView;
DLnewcs_2.DataBind();//注:该datalist绑定数据表中的第16-30条数据

DataSet ds3 = Bhouse.GetList(" top 15 *", "pass='1' and kind='4'", " lastdate desc");
DLnewcs_3.DataSource = ds3.Tables[0].DefaultView;
DLnewcs_3.DataBind();//注:该datalist绑定数据表中的第31-45条数据
...全文
210 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyjoy2006 2009-01-03
  • 打赏
  • 举报
回复
sq_zhuyi,你的做法很好
但现在我遇到个问题是,调试时提示:“输入数组长度大于此表中的列数。 ”
我查了相关资料仍未能解决问题,还请指点指点!
cnwolfs 2009-01-03
  • 打赏
  • 举报
回复
mark
Smart 2009-01-03
  • 打赏
  • 举报
回复
表中的数据不够45条时当然会出现数组越界了,try一下就行了
BossFriday 2008-12-29
  • 打赏
  • 举报
回复
LZ的做法,就有问题.
如果查询条件和表都是一样的.为什么不一次性取出45条不重的数据,然后在分别取其中的1-16,16-30,31-45.
gtiroy 2008-12-29
  • 打赏
  • 举报
回复
你可以在底层查询的时候就把重复的去掉~
chuxue1342 2008-12-29
  • 打赏
  • 举报
回复
同意8楼,如果你要分页的话,可以用存储过程分页
bestdowt1314 2008-12-29
  • 打赏
  • 举报
回复
先放在一个DataSet里面.然后再从 DataSet里面分出三张表不就行了呀.
路人乙e 2008-12-29
  • 打赏
  • 举报
回复
楼主那样写岂不是相当浪费资源?
一次查出45条数据,然后作二次处理
粗略代码如下(只是提示)
DataSet ds1 = Bhouse.GetList(" top 45 *", "pass='1' and kind='4'", " lastdate desc");
DataTable dt1,dt2,dt3;
int i = 0;
foreach(DataRow row in ds1.Tables[0].Rows)
{
if(i<15) dt1.Rows.Add(row);
else if(i>=15&&i<30) dt2.Rows.Add(row);
else dt3.Rows.Add(row);
i++;
}
xuqunying0545 2008-12-29
  • 打赏
  • 举报
回复
sqlserver:O_id自动增长,orderid可以重复,orderid重复取O_id最大的值的相关信息
where 条件语句中最好不要用子查询,效率较低,所以选择第二方法,表名最好不要跟sqlserver里面的字段值相同。

第一种方法:
select distinct * from [order] a where not exists
(select 1 from [order] b where a.O_id<b.O_id and a.orderid=b.orderid) --and o_name='ss' order by o_time;
第二种方法:
SELECT *
FROM [order] a,
(SELECT orderid,MAX(O_id) AS O_id
FROM [order]
GROUP BY orderid ) AS b
WHERE a.O_id = b.O_id AND a.orderid = b.orderid
derelictangel 2008-12-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xxw_come 的回复:]
distinct 去重复字段1,去重复字段2
代替×
[/Quote]

PS:
我的目标是 ---->

^_^
skyjoy2006 2008-12-29
  • 打赏
  • 举报
回复
这个数据显示在首页的,不用分页
只是受版面的限制(版面上3个datalist的样式分别不同),不想用一个datalist显示前45条记录。所以用了3个datalist来分别取前15 中间15 后面15条的形式。
koukoujiayi 2008-12-28
  • 打赏
  • 举报
回复
好象和三层无关!!
做一个DataSet就可以了!!
zming 2008-12-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 skyjoy2006 的帖子:]
Bhouse为操作该数据表的Bll层对象,怎么样去重复(后两个datalist中的数据)
DataSet ds1 = Bhouse.GetList(" top 15 *", "pass='1' and kind='4'", " lastdate desc");
DLnewcs_1.DataSource = ds1.Tables[0].DefaultView;
DLnewcs_1.DataBind();//注:该datalist绑定数据表中的第1-15条数据

DataSet ds2 = Bhouse.GetList(" top 15 *", "pass='1' and kind='4'", " lastdate desc");
DLnewcs_2.DataSource = ds2.Tables[0…
[/Quote]

三个DataSet, 楼主莫非是想做分页?
如果想做分页,网上使用存储过程分页的参考代码很多。
skyjoy2006 2008-12-28
  • 打赏
  • 举报
回复
仅仅一个distinct 一个字段能去掉重复的数据记录??????????????????????????
那个只是去掉重复的同名字段的记录
xxw_come 2008-12-28
  • 打赏
  • 举报
回复
distinct 去重复字段1,去重复字段2
代替×

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧