如果另一个表中不存在相同的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放置在form的load事件中。我做错什么了?
编辑:我想做的-
TableA
ID Name Surname
200 John Mills
TableB
ID Name Surname
300 Jane Mills
您注意到,在两个表中,“姓氏”字段中都有一个匹配项。在这种情况下,我希望选中复选框,但ID必须不同。
换句话说,如果有一个具有不同ID的记录,但是其他一个字段是相同的,我想将复选框设置为True。
发布于 2016-04-05 22:10:40
使用NOT EXISTS()
,查询检查是否有另一个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)
只有在不存在具有相同名称/姓氏和ID的记录时,才会将字段更新为true
。
如果具有不同ID的1条记录就足够了,您可以在同一个主体上使用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)
https://stackoverflow.com/questions/36442691
复制相似问题