在oracle中查找表中只出现过一次的id

问题描述 投票:0回答:1

我需要找到表中没有历史记录的数据,在下面给出的输入数据 ID 37798411 和 74368539 有历史记录,我需要用 SQL 查询过滤掉。 我使用了下面的 SQL 但没有得到正确的结果集

SELECT
    *
FROM
    data_set
WHERE
    id IN (
    SELECT
        id
    FROM
        data_set
    GROUP BY
        id
    HAVING
        count(id) = 1)

INPUT

ID           Start_date                    End_date
---------------------------------------------------------
37798411    2023-09-21 00:00:00.000 
37798411    2023-04-27 00:00:00.000 2023-09-20 00:00:00.000
37798411    2022-07-21 00:00:00.000 2023-04-26 00:00:00.000
74368539    2023-09-27 00:00:00.000 
74368539    2023-03-30 00:00:00.000 2023-09-26 00:00:00.000
83851566    2023-09-21 00:00:00.000 
83849576    2023-09-21 00:00:00.000 
84042557    2023-09-21 00:00:00.000 


output 

ID           Start_date                    End_date
------------------------------------------------------------
83851566    2023-09-21 00:00:00.000 
83849576    2023-09-21 00:00:00.000 
84042557    2023-09-21 00:00:00.000 
sql mysql oracle amazon-redshift data-warehouse
1个回答
0
投票

您也可以这样做,这将返回一个结果集,其中排除在原始表中具有多个条目的记录:

select *
from data_set s
where not exists (
                 select 1 
                 from data_set
                 where id = s.id
                 having count(1) > 1
                 )
© www.soinside.com 2019 - 2024. All rights reserved.