SQL:检查一个表到另一个表中是否存在条目,并删除重复项

SQL:检查一个表到另一个表中是否存在条目,并删除重复项,sql,sql-server,tsql,Sql,Sql Server,Tsql,实际上和这个问题是一样的: 这是我的表格、员工和用户 Employee User EmpNo EmpNo PositionCode 我只想检查table:Employee中的EmpNo是否已经存在于table:User中 以下是我使用的代码: SELECT Employee.EmpNo, PositionCode FROM Employee WHERE NOT EXISTS (SELECT 1 FRO

实际上和这个问题是一样的:

这是我的表格、员工和用户

Employee           User
EmpNo              EmpNo
PositionCode
我只想检查table:Employee中的EmpNo是否已经存在于table:User中 以下是我使用的代码:

SELECT Employee.EmpNo, PositionCode
FROM   Employee
WHERE  NOT EXISTS (SELECT 1 
                   FROM   User
                   WHERE  User.EmpNo= Employee.EmpNo)
现在通过该查询显示结果, 但它也会显示位置代码的重复行

例如:


所以,是的,我只需要获取位置代码(在这个例子中是ER1),这样我就可以将其显示到dropdownList,而您不想在dropdownList中显示相同的项目,对吗?

我仍然不确定您想要什么。但据我所知,您需要不同的
PositionCode
,它们与
EmpNo
相关。如果这是您想要的,您可以选择如下所示的
Distinct PositionCode

SELECT distinct  PositionCode
FROM   Employee
WHERE  NOT EXISTS (SELECT 1 
                   FROM   User
                   WHERE  User.EmpNo= Employee.EmpNo)
SELECT DISTINCT PositionCode
FROM   Employee
WHERE  NOT EXISTS (SELECT 1 
                   FROM   User
                   WHERE  User.EmpNo= Employee.EmpNo)

如果这不是您想要的,请告诉我。

同时指定预期结果。指定您拥有的数据和预期结果如果您不需要相关员工,并且只需要
Distinct
PositionCode,您只需选择
Distinct PositionCode
,即可获得所需的输出。如果你也发布了预期的结果,那就好了。虽然这可能会解决问题,但添加一个解释为什么/如何工作总是好的。嗨,我已经编辑了这个问题,希望这次能更清楚。我想使用DISTINCT,但我不确定,DISTINCT不会影响我在两个表上比较EmpNo的查询,对吗?我的意思是,如果EmpNo不存在于另一个表中,并且不会显示不同的结果,那么EmpNo仍将被验证?在对表进行筛选后,将应用不同的结果。所以它只会给你带
PositionCode
的不同行。嗨@wolfQueen你能解释一下为什么你对我在你接受之前发布的答案投了反对票吗answer@wolfQueen然后放弃投票,因为我发布的答案早于你接受的答案
SELECT DISTINCT PositionCode
FROM   Employee
WHERE  NOT EXISTS (SELECT 1 
                   FROM   User
                   WHERE  User.EmpNo= Employee.EmpNo)