我从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语句中发送数据
答案 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列显示什么内容:1
或2
?
你可以写:
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");