【发布时间】:2013-02-19 10:18:27
【问题描述】:
所以我一直在环顾四周,并没有找到太多东西。我提前道歉,因为这可能是错误的做法,但事实就是如此。
所以我必须跟踪同事完成的课程。这是通过提供 MS 访问数据库的 Excel 表完成的。有 3 个字段提供给我。
全名、课程名称和完成日期。
我知道我在这里没有主键,所以我正在尝试创建一个查询,该查询只会附加从 Excel 表中提取的唯一记录。我可以基于单个字段执行此操作,但需要帮助使我的查询仅在全名和课程名称不相同时附加它,例如
Joe Somebody, Course#1, 14feb13
Joe Somebody, Course#2, 15feb13
Joe Somebody, Course#1, 15feb13
我需要一个查询,它将前 2 行附加到表中,但由于该人已经完成课程#1 而忽略第三行。这就是我目前所拥有的,基本上将我的姓名字段变成了主键。
INSERT INTO table [Full name], [Course], [Date]
SELECT excel_table.[Full name], excel_table.[Course], excel_table.[Date]
FROM excel_table
WHERE excel_table.[Full name] Not in (SELECT table.[Full Name] FROM table)
我最后也有一些 Is Not Null 的东西,但我认为这与问题无关。
【问题讨论】:
-
所以基本上你需要 (FullName, CourseName) 组合键。不确定如何在 MS Access 中工作,但对于 mysql,我创建了一个演示 sqlfiddle.com/#!2/8e17a/1。希望这会有所帮助
-
它确实有助于我认为我可以使用您的代码,只需对访问进行很少的调整。非常感谢!