【发布时间】:2021-12-08 14:00:26
【问题描述】:
我希望下面的添加查询只添加表中不存在的记录。
INSERT INTO tbl_TRUCK_train_cv ( handling, [text] )
SELECT qryTRUCK_CV_train_CW_2.cv_2 AS handling, "TRUCK: " & [tblTRUCKInformation].[fldTextTXT] & Chr(10) & Chr(13) & "train: " & [tbltrainInformation].[fldTextTXT] AS [text]
FROM (qryTRUCK_CV_train_CW_2 LEFT JOIN tbltrainInformation ON qryTRUCK_CV_train_CW_2.cw = tbltrainInformation.fldID) LEFT JOIN tblTRUCKInformation ON qryTRUCK_CV_train_CW_2.cv = tblTRUCKInformation.fldID
WHERE (((qryTRUCK_CV_train_CW_2.cv)<>""));
例如
表tbl_TRUCK_train_cv中的数据如下:
id | handling | text
-------------------------
"" | "CV1/CW1" | "bla"
"" | "CV4/CW7" | "bla"
add查询中的数据如下:
id | handling | text
-------------------------
"" | "CV3/CW12" | "bla"
"" | "CV4/CW7" | "bla"
添加查询应该只添加"" | "CV3/CW12" | "bla",因为该记录不在表tbl_TRUCK_train_cv中
我不知道如何解决这个问题。 在这种特殊情况下,该表由可能具有重复值的不同查询填充。
【问题讨论】:
-
向定义目标表中记录唯一性的字段添加唯一索引 (
tbl_TRUCK_train_cv)。 -
将
Indexed设置为Yes (No Duplicates)会导致查询出错。或者我可能误解了你的建议 -
如果你从代码中运行它。尝试拨打
DoCmd.SetWarnings = False。或者使用查询作为源,在该查询中包含目标表的外连接,并根据其 ID 过滤为 Null。 -
什么是数据中的“重复”值 - 哪些字段决定了记录的唯一性?编辑问题以将示例数据和所需结果显示为文本表。
-
您可以使用 vba 解决此问题。根据添加查询循环遍历记录集。对于每一行,检查它是否在 tbl_Truck_train_cv 中,如果没有则插入。
标签: ms-access