2010-09-22 35 views
0

我有一个MySQL表和一个Excel文件。我想更新MySQL表格以包含来自Excel文件的信息,这很简单 - 只需为每行创建适当的SQL语句编写一个快速公式即可。在外部列表中检查MySQL表中的重复项?

但首先我想检查所有数据是否正确匹配。因此,如果给定的行有WidgetID 1001,我想检查该WidgetID是否在MySQL表中。对于给定的行,这很简单 - 只需生成一个SQL语句

SELECT COUNT(*) FROM mytable WHERE WidgetID = "1001" 

并执行它。但是,如何在不粘贴命令的情况下检查所有行?基本上,我想要的东西像

If (SELECT COUNT(*) FROM mytable WHERE WidgetID = "1001") = 0 Display "1001\n" 

但我不知道如何做到这一点。 (我不使用SQL多!)

澄清:我做想在这个时候导入数据!这将是一项复杂的任务,因为数据需要以各种方式转换并输入十几个不同的表格。现在我只想检查非重复(这将几乎完全是错误,我想,虽然有些可能会是实际的新条目)。

回答

1
  1. 导出Excel以CSV
  2. 确保有上WidgetID列上创建UNIQUE索引
  3. 使用LOAD DATA INFILE将其替换,或者如果你想用新值来代替重复,或离开先前的忽略选项(视值)
+0

所有条目应该是重复的。现在我不想导入数据,因为有些条目不会重复 - 它们会有错别字或导致它们不匹配的其他错误。我想要的是找到非重复的,*不*要导入数据。 (导入会复杂得多,因为数据需要进入许多不同的表格。) – Charles 2010-09-22 20:57:30

+0

好的。我会告诉你我会做什么。我仍然会使用LOAD DATA INFILE将CSV数据加载到临时表中(而不是MySQL临时表 - 临时表示它将用于临时存储数据)表,然后使用包含左连接的简单查询来查找不匹配的条目。 – Mchl 2010-09-22 21:29:35

+0

听起来不错,我会尝试。 – Charles 2010-09-23 14:05:46