首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查另一个表sql中某列的值是否存在

检查另一个表sql中某列的值是否存在
EN

Stack Overflow用户
提问于 2013-07-17 19:50:59
回答 3查看 2K关注 0票数 2

我是SQL Server的新手。我必须将一列的值从表A复制到另一个表B中关于另一个列(JOIN),但在复制之前,我必须检查这个值是否存在于另一个表C中。如果存在,则复制,否则返回其值不在表C中的记录。我的查询是

代码语言:javascript
复制
IF EXISTS (SELECT Branch_ID FROM ADM_Branch
INNER JOIN UBL$ on ADM_Branch.Branch_Code = UBL$.[Branch Code  ] 
 WHERE ADM_Branch.Branch_Code = [UBL$].[Branch Code] )

        UPDATE EMP_Personal
    SET Account_Number = UBL$.[Account ] , Bank_ID = 1 , Branch_ID = (select Branch_ID from ADM_Branch join UBL$ on ADM_Branch.Branch_Code = UBL$.[Branch Code  ] where EMP_Personal.Emp_ID = UBL$.[Employee ID  ])
    FROM EMP_Personal JOIN UBL$
    ON EMP_Personal.Emp_ID = UBL$.[Employee ID  ]


ELSE

    ( SELECT UBL$.[Employee ID  ],UBL$.[Name ],UBL$.[Account ],UBL$.[Branch Code  ]
    FROM UBL$) except ( SELECT UBL$.[Employee ID  ],UBL$.[Name ],UBL$.[Account ],UBL$.[Branch Code  ]
    FROM UBL$
    right join ADM_Branch on  ADM_Branch.Branch_Code = UBL$.[Branch Code  ])
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-17 21:14:35

我想下面的代码会给你一些启发,我试着保持列名不变,但你可能需要做一些修改:

代码语言:javascript
复制
UPDATE EMP
SET EMP.Account_Number = UBL.[Account ],
    EMP.Bank_ID = 1,
    EMP.Branch_ID = ADM.Branch_ID   
FROM EMP_Personal EMP
JOIN UBL$ UBL ON EMP_Personal.Emp_ID = UBL.[Employee ID  ]
JOIN ADM_Branch ADM ON ADM.Branch_Code = UBL.[Branch Code  ];

SELECT [Employee ID  ],[Name ],[Account],[Branch Code  ]
FROM UBL$ 
WHERE [Branch Code  ] NOT IN (SELECT Branch_Code FROM ADM_Branch);
票数 1
EN

Stack Overflow用户

发布于 2013-07-17 19:59:52

对于条件INSERT/UPDATE/DELETE,最好使用MERGE语句。它的语法一开始并不容易,最后的语句也很长,但这是一个非常强大的工具。我建议你去学习它。在MS SQL Server 2008和更高版本中可以访问合并。

票数 1
EN

Stack Overflow用户

发布于 2013-07-18 16:05:13

感谢我用这种方式做的一切;

代码语言:javascript
复制
UPDATE EMP_Personal
SET account_number = s.[Account ] , Bank_ID = 1 , Branch_ID= (select Branch_ID from ADM_Branch join UBL$ on ADM_Branch.Branch_Code = UBL$.[Branch Code  ] where EMP_Personal.Emp_ID = UBL$.[Employee ID  ])
FROM emp_personal
INNER JOIN (
SELECT UBL$.[Account ] , UBL$.[Employee ID  ]
FROM UBL$
INNER JOIN adm_branch
ON adm_branch.branch_code = UBL$.[Branch Code  ] ) as s
ON s.[Employee ID  ] = emp_personal.Emp_ID
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17699045

复制
相关文章

相似问题

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