Mysql 如何在sql中从sql查询结果中填充数据

Mysql 如何在sql中从sql查询结果中填充数据,mysql,sql,sql-server,tsql,Mysql,Sql,Sql Server,Tsql,我有一个sql查询 SELECT MenuID, Text, ParentID, Refcode FROM Menu E1 WHERE E1.RefCode IN (0,50,51,60,63,57) 它将生成结果集 MenuID Text ParentID Refcode ----------- ------------------

我有一个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的项,因为它没有任何子项,如何使用对第一个查询结果的另一个查询或更改第一个查询来实现此结果集

您可以使用
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
)

使用具有不同连接的连接:

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 ) 

SQL的味道是什么?