如何从DBF文件中选择不同的值?

时间:2012-10-08 19:42:10

标签: c# sql dbf

我从DBF文件中获取数据并将其放在DataTable中,我只想获取不同的数据,例如:

Column1
  a
  b
  c
  b
  a

DataTable应该只填充:

Column1
  a
  b
  c

有没有办法让这种情况发生,或者解决它?

            connDBF.Open();
            string jobData1 = "SELECT * FROM HREQDETM.DBF";

            OdbcCommand cmd1 = new OdbcCommand();
            cmd1.CommandText = (jobData1);

            OdbcDataAdapter dbAdapter1 = new OdbcDataAdapter(jobData1, connDBF);

            DataSet dtSet1 = new DataSet();
            dbAdapter1.Fill(dtSet1);


            DataTable dbTable1 = dtSet1.Tables[0];

问题是,我正在进行迁移,数据是在DBF文件中,我想要快速,因为我要在我的计算机上运行脚本并通过VPN在SQL语句中发送数据

2 个答案:

答案 0 :(得分:3)

只需在查询中添加DISTINCT

即可
string jobData1 = "SELECT DISTINCT Column1 FROM HREQDETM.DBF";

如果你想要Column1的不同值,但仍然需要表中的其余列,那么当两个或多个值组合在一起作为Column1的一个时,你必须决定要获得哪些数据。

实施例

Column1  Column2
  a         1
  b         1
  c         1
  b         2
  a         2

因此,当删除a的重复项时,您要在第2列显示什么内容:12
你可以写:

SELECT
   Column1,
   MIN(Column2) --To get 1 Or MAX(Column2) to get 2
FROM 
  HREQDETM.DBF
GROUP BY 
  Column1

我建议您阅读更多关于Group by and aggregates

的内容

答案 1 :(得分:2)

使用DISTINCT

SELECT DISTINCT Column1 FROM HREQDETM.DBF

作为替代方案,如果要将所有数据保存在DataTable中并只提取不同的值(因此您不必重新查询源代码,您只需创建一个DataView并将其过滤为不同的值:

DataView view = new DataView(table);
DataTable distinctValues = view.ToTable(true, "Column1");