嗨,我有这张桌子:
CREATE TABLE [dbo].[personel2](
[prsl_id] [int] IDENTITY(1,1) NOT NULL ,
[prsl_name] [nvarchar](50) NOT NULL,
[prsl_family] [nvarchar](50) NOT NULL,
[parent_id] [int] NULL)
和prsl_id
是主键,parent_id
是与prsl_id
有关系的外键。
我有一个大问题,如何在此表中找到没有孩子的记录?
例如:
prsl_id|parent_id|name
1 |null |a
2 |1 |b
3 |null |c
4 |2 |d
预期结果是:
prsl_id|parent_id|name
3 |null |c
4 |2 |d
请尽快帮助我。谢谢..
答案 0 :(得分:0)
你可以试试这个
SELECT x.prsl_id from
(SELECT e.prsl_id, COUNT(s.prsl_id) as "Num_subordinates"
FROM dbo.personel2 e
LEFT JOIN dbo.personel2 s ON s.prsl_id = e.parent_id
GROUP BY e.prsl_id) x where Num_subordinates = 0
您可以针对您的问题尝试此操作
select prsl_id from personel2 x where not exists (select parent_id from personel2 y where x.prsl_id=y.parent_id)