我有一个SQL查询
SELECT MenuID,
Text,
ParentID,
Refcode
FROM Menu E1
WHERE E1.RefCode IN (0,50,51,60,63,57)
它将生成结果集
MenuID Text ParentID Refcode
----------- -------------------------------------------------- ----------- ----------
1 Product NULL 0
2 Applications NULL 0
3 Document NULL 0
4 Support NULL 0
6 Background 1 0
7 Details 1 50
8 Mobile Device 2 51
12 Performance Tests 2 0
15 FAQ 4 57
18 InternetRestrictions 6 60
21 Modem Results 12 63
我需要另一个减少结果的查询,即我需要删除所有没有任何子项的项所以在预期的结果中,必须删除带有menuid 3的项目,因为它有没有任何孩子,我如何使用关于第一次查询的结果或更改第一个查询的另一个查询来实现此结果集
答案 0 :(得分:2)
您可以使用EXISTS
:
SELECT Menuid,
Text,
Parentid,
Refcode
FROM Menu E1
WHERE E1.Refcode IN ( 0, 50, 51, 60, 63, 57 )
AND EXISTS
(
SELECT 1 FROM Menu E2
WHERE E2.Parentid = E1.Menuid
)
答案 1 :(得分:0)
使用不同的联接:
SELECT DISTINCT
E1.Menuid,
E1.Text,
E1.Parentid,
E1.Refcode
FROM Menu E1
JOIN Menu E2 ON E2.Parentid = E1.Menuid
WHERE E1.Refcode IN ( 0, 50, 51, 60, 63, 57 )