首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >访问SQL -一个字段不存在,至少另一个字段存在。

访问SQL -一个字段不存在,至少另一个字段存在。
EN

Stack Overflow用户
提问于 2016-04-06 05:58:18
回答 1查看 373关注 0票数 0

如果另一个表中不存在相同的ID,但至少有一个其他字段存在,则需要更新表中的复选框。以下是我所拥有的:

代码语言:javascript
代码运行次数:0
运行
复制
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事件中。我做错什么了?

编辑:我想做的-

代码语言:javascript
代码运行次数:0
运行
复制
TableA

ID    Name  Surname 
200   John  Mills

TableB

ID    Name  Surname
300   Jane  Mills

您注意到,在两个表中,“姓氏”字段中都有一个匹配项。在这种情况下,我希望选中复选框,但ID必须不同。

换句话说,如果有一个具有不同ID的记录,但是其他一个字段是相同的,我想将复选框设置为True。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-06 06:10:40

使用NOT EXISTS(),查询检查是否有另一个ID的记录,它不检查所有记录是否有其他ID:

代码语言:javascript
代码运行次数:0
运行
复制
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()

代码语言:javascript
代码运行次数:0
运行
复制
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。然后:

代码语言:javascript
代码运行次数:0
运行
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36442691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档