2

我从 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 文件中,我想要一些快速的东西,因为我将在我的计算机中运行脚本并通过 SQL 语句中的 VPN 发送数据

4

2 回答 2

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您希望在 column2:1或中显示2什么?
你可以写:

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

我建议阅读更多关于Group by 和聚合的信息

于 2012-10-08T19:54:16.640 回答
2

使用DISTINCT

SELECT DISTINCT Column1 FROM HREQDETM.DBF

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

DataView view = new DataView(table);
DataTable distinctValues = view.ToTable(true, "Column1");
于 2012-10-08T19:54:04.160 回答