访问 SQL - 一个字段不存在,至少有一个字段存在
Access SQL - One field doesn't exist, at least one of other do exist
我需要更新 table 中的复选框,如果另一个 table 中的相同 ID 不存在,但至少有一个其他字段存在。这是我拥有的:
UPDATE TableA
INNER JOIN TableB_
ON TableB_Name=TableA.Name OR TableB.Surname=TableA.Surname
AND NOT TableB.ID=TableA.ID
SET TableA.Checkbox=True
这个SQL放在窗体的加载事件中。我做错了什么?
编辑:我想做什么 -
TableA
ID Name Surname
200 John Mills
TableB
ID Name Surname
300 Jane Mills
您注意到在两个 table 字段中都有匹配的 "Surname" 字段。我希望在这种情况下选中 Checkbox,但 ID 必须不同。
换句话说,如果有一条记录具有不同 ID,但其他字段之一相同,我想将 Checkbox 设置为 True。
使用 NOT EXISTS()
,您的查询检查是否有具有另一个 ID 的记录,它不检查 ALL 记录是否具有其他 ID :
UPDATE TableA
SET TableA.checkbox = true
WHERE NOT EXISTS(SELECT 1 FROM TableB
WHERE (TableB_Name=TableA.Name OR TableB.Surname=TableA.Surname)
AND TableB.ID=TableA.ID)
仅当不存在具有相同 name/surname 和 ID 的记录时,才会将字段更新为 true
。
如果 1 条不同 ID 的记录就足够了,您可以在同一主体上使用 EXISTS()
:
UPDATE TableA
SET TableA.checkbox = true
WHERE EXISTS(SELECT 1 FROM TableB
WHERE (TableB_Name=TableA.Name OR TableB.Surname=TableA.Surname)
AND TableB.ID<>TableA.ID)
也许你的意思是组合,不存在具有相同 ID 的记录,但存在具有另一个 ID 的记录。那么:
UPDATE TableA
SET TableA.checkbox = true
WHERE NOT EXISTS(SELECT 1 FROM TableB
WHERE (TableB_Name=TableA.Name OR TableB.Surname=TableA.Surname)
AND TableB.ID=TableA.ID)
AND EXISTS(SELECT 1 FROM TableB
WHERE (TableB_Name=TableA.Name OR TableB.Surname=TableA.Surname)
AND TableB.ID<>TableA.ID)
我需要更新 table 中的复选框,如果另一个 table 中的相同 ID 不存在,但至少有一个其他字段存在。这是我拥有的:
UPDATE TableA
INNER JOIN TableB_
ON TableB_Name=TableA.Name OR TableB.Surname=TableA.Surname
AND NOT TableB.ID=TableA.ID
SET TableA.Checkbox=True
这个SQL放在窗体的加载事件中。我做错了什么?
编辑:我想做什么 -
TableA
ID Name Surname
200 John Mills
TableB
ID Name Surname
300 Jane Mills
您注意到在两个 table 字段中都有匹配的 "Surname" 字段。我希望在这种情况下选中 Checkbox,但 ID 必须不同。
换句话说,如果有一条记录具有不同 ID,但其他字段之一相同,我想将 Checkbox 设置为 True。
使用 NOT EXISTS()
,您的查询检查是否有具有另一个 ID 的记录,它不检查 ALL 记录是否具有其他 ID :
UPDATE TableA
SET TableA.checkbox = true
WHERE NOT EXISTS(SELECT 1 FROM TableB
WHERE (TableB_Name=TableA.Name OR TableB.Surname=TableA.Surname)
AND TableB.ID=TableA.ID)
仅当不存在具有相同 name/surname 和 ID 的记录时,才会将字段更新为 true
。
如果 1 条不同 ID 的记录就足够了,您可以在同一主体上使用 EXISTS()
:
UPDATE TableA
SET TableA.checkbox = true
WHERE EXISTS(SELECT 1 FROM TableB
WHERE (TableB_Name=TableA.Name OR TableB.Surname=TableA.Surname)
AND TableB.ID<>TableA.ID)
也许你的意思是组合,不存在具有相同 ID 的记录,但存在具有另一个 ID 的记录。那么:
UPDATE TableA
SET TableA.checkbox = true
WHERE NOT EXISTS(SELECT 1 FROM TableB
WHERE (TableB_Name=TableA.Name OR TableB.Surname=TableA.Surname)
AND TableB.ID=TableA.ID)
AND EXISTS(SELECT 1 FROM TableB
WHERE (TableB_Name=TableA.Name OR TableB.Surname=TableA.Surname)
AND TableB.ID<>TableA.ID)