mycomm = "SELECT DISTINCT * FROM pay WHERE pay_username NOT IN (SELECT pay_username FROM pay WHERE pay_pwd IS NULL )";                OleDbDataAdapter sda = new OleDbDataAdapter(Mycomm, MyConn);
                DataSet ds = new DataSet();
                sda.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];dataGridView 成功的加载了数据库返回来的信息.不过虽然我在SELECT后面加上了 DISTINCT  但是出现在dataGridView1里 还是有相同的行请问应该怎么处理?
谢谢

解决方案 »

  1.   

    可以在在一个datatable里面做了一个主键,这样避免了重复的信息               DataTable dt=(System.Data.DataTable)this.ds.Tables[0];
                string[] fileds={"Filed1","Filed2"};//DISTINCT字段数组
                DataTable newdt=this.SelectDistinct(dt,fileds);//返回过滤后的DataTable
      

  2.   

    dataGridView1.DataSource = newdt;
      

  3.   

    不能用select *, 因为 * 就代表所有,你每一行的数据肯定有某个字段是不一样的,要不然就不会有2条了
    比如所表A 里有两个字段,id(主键)和name,因为主键肯定不会相同的,所以
    数据分别是
    1,hugo
    2,hugo
    3,alice
    4,alice
    如果 select distinct * from A
    那么查询出来就是4条数据
    如果 select distinct name from A
    那么查询出来就是2条数据
    知道为什么了吗,就是因为distinct是按照不是相同的数据来查找的