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条。

解决方案 »

  1.   

    order by (case when datediff(dd,set_top,getdate()<0 then 0 else 1 end ) asc
      

  2.   

    我的是acc数据库,上面的语句有问题
      

  3.   

    或者改一个思路,如何将2个查询绑到一个控件上:原来的查询代码是没问题的,只是分别绑到了2个控件上,我想弄到一个上面。利于做样式管理。
     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条非置顶,也就是说要优先保证置顶的显示到最前面。
      

  4.   

      Select *(换成具体的字段名) from data where datediff('h',Now(),[set_top])> 0 and jubao < 3 order by date_time desc
              union
             Select  *(换成具体的字段名)  from data where datediff('s',Now(),[set_top])< 0 and jubao < 3 order by date_time desc之后再取50条显示就可以了。