对相同重复表的SQL查询

时间:2017-02-24 09:53:14

标签: sql ms-access

使用Access,我有下表

ID  Root_ID  Level  Code
S1  S        10     ABC
S3  S        20     DFG
L4  L        10     FFF
L4  L        20     GGG
F2  F        10     ABC

我正在寻找的是:具有相同代码的行,在相同级别但具有不同的Root_ID。

我使用两次相同的表T创建了一个查询,并在Level和代码上创建了一个内部连接。在尝试识别不同的Root_ID之前我先尝试了这个,但返回的结果是错误的......

例如,结果应为:

ID  Root_ID  Level  Code
S1  S        10     ABC
F2  F        10     ABC

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您可以找到子查询中有多个唯一root_id的代码级别,然后将其与表连接以获取完整的行。

select a.*
from your_table as a
inner join (
    select code, level
    from your_table
    group by code, level
    having count(distinct root_id) > 1
    ) as b on a.code = b.code
    and a.level = b.level

答案 1 :(得分:0)

试试这个

select t1.*
from your_table as t1
inner join (
    select code, level
    from your_table
    group by code, level
    having min(root_id) <> max(root_id)
    ) as t2 on t1.code = t2.code
    and t1.level = t2.level