检查是否有孩子

时间:2013-02-25 14:00:36

标签: sql sql-server

考虑这两个表:

  

职位(positionid,positiontext,reportstopositionid)

     

用户(userid,positionid)

如何在一个查询中检查用户是否有任何下属? 它甚至可能吗?

下属: 具有positionid的用户(a)至少有一个或多个下属,如果存在任何用户(b),其中user(a)的positionid作为reportstopositionid给用户(b)对应的positionid

3 个答案:

答案 0 :(得分:2)

这将返回拥有下属的用户:

SELECT *
FROM   User u
WHERE  EXISTS (
           SELECT 1
           FROM   Position p
           WHERE  p.reportstopositionid = u.positionid
       )

答案 1 :(得分:1)

这个怎么样?

SELECT  DISTINCT a.*
FROM    user a
        INNER JOIN position b
            ON a.userID = b.reportstopositionID

此查询返回的记录是在userid列的position表上具有匹配ID reportstopositionID的记录

答案 2 :(得分:1)

我认为您希望使用where子句执行此操作:

select u.*
from user u
where u.positionId in (select reportstopositionid from position p)

这将获得匹配的用户列表,没有重复。