Oracle 查询:如何将返回的记录限制为计数 > 1 但显示完整结果的记录?

Posted

技术标签:

【中文标题】Oracle 查询:如何将返回的记录限制为计数 > 1 但显示完整结果的记录?【英文标题】:Oracle query: how do I limit the returned records to only those having a count > 1 but show full results? 【发布时间】:2019-10-25 00:26:00 【问题描述】:

我需要显示拥有多个 ID 的所有用户,但不返回拥有多个 ID 的用户。我尝试使用 group ,但我需要列出 ID 而不仅仅是计算它们,所以无法让它为我工作。我最终使用了下面的代码,但它返回了所有记录。

选择 id,fname,lname,ssn,dob 按 fname、lname、ssn、dob 划分的 count(id) 为 cnt 从表 按cnt desc排序;

【问题讨论】:

【参考方案1】:

使用子查询:

select id, fname, lname, ssn, dob
from (select id, fname, lname, ssn, dob,
             count(id) over (partition by fname, lname, ssn, dob) as cnt
      from TABLE
     ) t
where cnt >= 2
order by cnt;

【讨论】:

【参考方案2】:
WITH CTE (FNAME, LNAME, TALLY) AS
(
  SELECT FNAME, LNAME, COUNT(ID) AS TALLY
  FROM TABLE
  HAVING COUNT(ID) > 1
)
SELECT T.ID, C.FNAME,C.LNAME FROM CTE C
JOIN TABLE T
ON C.FNAME = T.FNAME
AND C.LNAME = T.LNAME

【讨论】:

以上是关于Oracle 查询:如何将返回的记录限制为计数 > 1 但显示完整结果的记录?的主要内容,如果未能解决你的问题,请参考以下文章

如何能实现将oracle的查询结果排序后,只返回第一条记录

限制从 Oracle 中的 SQL 查询返回的记录

oracle 如何返回多条记录

如何限制查询中返回的组数,而不是 Oracle 中的行数

将最小 n 条记录限制为 Oracle SQL 中的输出

在工作台中查看查询结果的长度(计数)