private void xinxi()
{
//数据源已经建好,返回数值是DataSET
conn reader = new conn();
reader.OpenDB();
String sql = "Select * from data where datediff('h',Now(),[set_top])> 0 and jubao < 3 order by date_time desc";
DataSet ds = reader.DataSets(sql);
//开始绑定
this.info.DataSource = ds.Tables[0];
this.info.DataBind(); Int32 n = 50 - ds.Tables[0].Rows.Count;
String sql1 = "Select top " + n + " * from data where datediff('s',Now(),[set_top])< 0 and jubao < 3 order by date_time desc";
DataSet ds1 = reader.DataSets(sql1);
this.info1.DataSource = ds1.Tables[0];
this.info1.DataBind();
reader.CloseDB();
}
其中set_top字段为时间,储存的是信息置顶时间,是一个未来的时间。
我的目的是先将没到期的信息查询出来显示到最前面,然后再显示没有置顶的信息。
置顶信息和非置顶信息一共显示50条。
private void xinxi()
{
conn reader = new conn();
reader.OpenDB();
String sql = "Select * from data where datediff('h',Now(),[set_top])> 0 and jubao < 3 order by date_time desc";
DataSet ds = reader.DataSets(sql);
this.info.DataSource = ds.Tables[0];
this.info.DataBind(); Int32 n = 50 - ds.Tables[0].Rows.Count;
String sql1 = "Select top " + n + " * from data where datediff('s',Now(),[set_top])< 0 and jubao < 3 order by date_time desc";
DataSet ds1 = reader.DataSets(sql1);
this.info1.DataSource = ds1.Tables[0];
this.info1.DataBind();
reader.CloseDB();
}数据库的信息有置顶和非置顶的,要求将置顶的全部显示出来,并且要显示到最前面。然后根据显示置顶的条数,得到剩余要显示多少条非置顶的条数。置顶+非置顶一共显示50条
比如有10条置顶,就再读取40条非置顶,如果有15条置顶,就再读取35条非置顶,也就是说要优先保证置顶的显示到最前面。
union
Select *(换成具体的字段名) from data where datediff('s',Now(),[set_top])< 0 and jubao < 3 order by date_time desc之后再取50条显示就可以了。