代码之家  ›  专栏  ›  技术社区  ›  Muhammad Waheed Ray K.

为什么父表的ID与子表记录匹配的次数相同

  •  -1
  • Muhammad Waheed Ray K.  · 技术社区  · 7 年前

    create table parent_tab
    ( id int primary key,
    name varchar2(100));
    
    create table child_tab
    ( id int primary key,
    name varchar2(100),
    parent_id int references parent_tab(id));
    
    
    insert into parent_tab values (1,'One');
    insert into parent_tab values (2,'Two');
    
    insert into child_tab values (11,'abc',1);
    insert into child_tab values (12,'def',1);
    insert into child_tab values (13,'ghi',1);
    insert into child_tab values (14,'jkl',1);
    
    insert into child_tab values (15,'mno',2);
    insert into child_tab values (16,'pqr',2);
    insert into child_tab values (17,'stu',2);
    insert into child_tab values (18,'vwx',2);
    

    我使用下面的查询来提取 ID parent_Tab 如果它有任何子记录。

    select p.id 
    from parent_Tab p 
    inner join child_tab c on p.id = c.parent_id ;
    

    电流输出:

    ID
    ___
    1                                      
    1                                      
    1                                      
    1                                      
    2                                      
    2                                      
    2                                      
    2         
    

    ID
    ___
    1                                                                 
    2                                      
    
    

    我想知道的是 为什么要复制?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Mano    7 年前

    你的使用 INNER JOIN 这里你可以包括 DISTINCT

    SELECT DISTINCT p.id 
    FROM parent_Tab p 
    INNER JOIN child_tab c ON p.id = c.parent_id ;