好的,这是我的问题,没有因为将公司惯例发布到互联网而被解雇的原因过于具体。

有电子表格。 这些已上传到数据库。 我需要从上传中过滤出重复项。 唯一的方法是确保每个条目的两个字段都与数据库中已有的条目不同。 仅仅因为一个字段是相同的,并不意味着它是重复的。 有两个特定的字段,可以将它们称为FLDA和FLDB,它们都必须与数据库中的一个条目匹配。 我已经可以按一个字段过滤了。 我想这必须是一个子查询,但我不确定如何应用它。 这很难描述。 请问您是否不确定我的意思。

===============>>#1 票数:1

我有一个类似的问题。 我的解决方案是:

  1. 导入到登台表中。
  2. 删除重复项
  3. 将剩余的内容复制到活动表中

这是一个小BFI,但仅能正常工作。

===============>>#2 票数:1

查询适合吗? 例如:

INSERT INTO ToUpdate ( Field1, Field2 )
SELECT e.H1, e.H2
FROM (SELECT * FROM [Sheet1$] IN '' [Excel 8.0;HDR=YES;IMEX=1;database=C:\Docs\LTD.xls]) As e
LEFT JOIN ToUpdate ON (e.H2 = ToUpdate.Field2) AND (e.H1 = ToUpdate.Field1)
WHERE ToUpdate.Field1 Is Null AND ToUpdate.Field2 Is Null

===============>>#3 票数:0

我通过使用删除查询,然后使用Select from Table 1 Group by X Having Y, Z, A进行Select from Table 1 Group by X Having Y, Z, A做到这一点。 然后,我为前端用户放置了运行查询按钮。

为您的所有帮助加油。

===============>>#4 票数:0

您如何将它们加载到数据库中? 这是您自己的代码来读取Excel文件吗? 您可以使用带有正确连接字符串的ADO / ADO.NET读取Excel文件 然后,您可以使用查询来删除重复数据,以读取数据。

===============>>#5 票数:0

Access以CodeSlave的答案为基础,提供了“查找重复项查询”向导,该向导可帮助您轻松构建查询以清除重复项。

另一种方法是在FLDA和FLDB上建立身份。 这将防止重复的条目甚至被写入表中。 当然,您还需要捕获插入操作失败时引发的异常。

===============>>#6 票数:0

是否存在用于识别重复项的字段FLDC? 我认为必须存在,否则使用(FLDA,FLDB)作为唯一键或主键将立即解决您的问题。

假设有这样一个字段,您可以尝试如下操作:

SELECT T1.FLDA, T1.FLDB, T1.FLDC
FROM Table1 T1, Table1 T2
WHERE T1.FLDA = T2.FLDA
  AND T1.FLDB = T2.FLDB
  AND T1.FLDC <> T2.FLDC

不利之处在于,原件和副本都将通过类似的方式返回。 如果您只想查看重复项,则可能必须找出一种方法来标识“原始”行,并为此添加另一个或两个WHERE子句。

如果您可以得到一个只提供重复行而不是原始行的查询,那么将其更改为DELETE查询应该很容易。

===============>>#7 票数:0

为了避免重复输入:

1-如果表上还没有主键,请将其放在FLDA和FLDB上(一起)。 如果已经有一个不是FLDA和FLDB(在一起)的主键,则在这两个字段的表上放置一个索引,唯一的是,忽略空值no。

2-您可以使用向导或查询从电子表格导入表格。 如果使用导入电子表格向导进行操作,则在导入开始之前您将看到以下消息:

“数据库名称无法将所有数据附加到表中。

“由于违反密钥,删除了0条记录中的字段内容,并丢失了(xx)条记录。(这些丢失的记录是重复的,因此在那里没有真正的丢失。)...您是否仍要继续?”

单击“是”以从电子表格导入行。 不会导入任何重复项。

或者,要使用查询进行导入,请将其粘贴到sql视图中的新查询中(菜单:“插入”>“查询”>“设计视图”,“关闭”按钮;菜单:“视图”>“ SQL视图”。)

INSERT INTO tblInput
  SELECT XLS.* 
  FROM tblInput AS T RIGHT JOIN
    [Excel 8.0;IMEX=1;HDR=Yes;DATABASE=c:\data.xls;].[Sheet1$] AS XLS 
    ON T.FLDA = XLS.FLDA AND T.FLDB = XLS.FLDB
  WHERE ISNULL(T.FLDA) AND ISNULL(T.FLDB);

将路径c:\\ data.xls更改为路径,将Sheet1 $更改为工作表名称,将tblInput更改为表名称,将FLDA和FLDB更改为列名称。 如果电子表格没有标题(列名),则将HDR = Yes更改为HDR = No

  ask by translate from so

未解决问题?本站智能推荐:

4回复

将电子表格中的行与数据库中的记录进行比较

我有一个Excel电子表格作为报表提供,而实际上它更多的是数据库,其中行号充当主键。 我需要将此组中的某些列与Access 2007数据库中的不同记录集进行比较。 为了使事情变得更复杂,需要定期自动执行此操作,而无需用户输入。 从电子表格中获取数据的最佳方法是什么,以及进行比较的最佳方
2回复

将数据从Excel中的2个电子表格导入到MS Access中的单个表中

我正在尝试将数据从2个Excel电子表格导入到MS Access 2007中的单个表中。 电子表格中的数据具有共同的记录-数字。 电子表格2的每个数字可能有许多不同的数据集。 电子表格1的格式为: 电子表格2的格式为 当我将数据导入2个不同的表并在1个表中运行追加查
1回复

将数据从电子表格取消透视表到数据表

这是一些背景知识,以防万一有其他/更好的方法来解决我的问题。 我有一个从Access导出到电子表格的查询。 导出的数据是数据透视查询导出,我将其传递给另一个已更新表并将其传递回我的工作人员。 另外,基础数据实际上是SQL 2005的链接表。我要说的是,因为我不怕SQL Server更新
1回复

从MS Access表单中的动态列表框中创建新的Excel电子表格

我有一个基于MS Access中的表单构建的搜索引擎。 该表单使用ListBox(“ List1”)来显示基于关键字搜索的结果。 我想创建一个按钮(“ Command47”),该按钮将在新的Excel电子表格中显示列表框的结果。 我不想将文件保存到文件路径,只是希望将其打开。 以下是我目
1回复

将Excel电子表格导入Access-[h]:mm:ss的格式问题

我需要将Excel电子表格导入Microsoft Access。 我有一栏,其格式为[h]:mm:ss。 当我使用Access导入它时,我已将该列指定为日期/时间格式,但显示不正确。 例如,在Excel中它将显示452:32:00,但在Access中将显示18/01/1900 20:3
1回复

为什么我的SQL表之一不允许我在MS Access的电子表格视图中进行更新?

情况 : 我在SQL中创建了很多表 这些表链接到MS Access 我可以很容易地将“新条目”“添加”到除一个表之外的所有表中 该表包含Foreign key参考(其他参考也是如此) 所有表都是以相同的方式创建和链接的 问题 :
1回复

仅将ODBC数据库表中的多个字段导入访问表

这适用于将整个表从ODBC数据库导入Access: 但是ODBC数据库中有一个包含517个字段的表,我只想导入5或6列/字段。 使用VBA执行此操作的最佳方法是什么? 我用谷歌搜索了几天,并在stackoverflow上读了10或15个线程,但我还没有看到这个具体的问题得到解答。
4回复

如何从Excel中的VBA查询Microsoft Access数据库字段

我目前正在编写一个程序,以将在Excel表单中输入的内容保存到Access中的数据库中。 每当我从Excel表单中的字段添加数据时,我都试图将Access中的主键字段增加“ 1”。 因为我已经将该字段声明为PRIMARY KEY NOT NULL字段,所以除非声明了主键字段,否则它不允许
2回复

从Excel工作表数据更新Access数据库

我使用宏将Access数据库中的数据提取到Excel工作表中。 我首先打开与数据库的连接,在字符串var中定义我的sql语句,然后将该数据转储到记录集中: 这很完美。 我将其分发给某些人,并要求他们更新字段。 然后,我需要使用传回的数据更新Access数据。 就设计而言,简单的事
1回复

如何设计Access数据库表,其中只有两个字段之一将具有数据?

我正在创建一个Access数据库,其中包含一个与ITEMS表相关的SALES表,其中包含已购买的服务和用品。 ITEMS表中的每个记录都将具有供应或服务名称,它们各自在各自的表中包含定价和相关信息。 如何在Access中创建此ITEMS表,以使每个记录的两个字段之一为空? 查询此表时会产生