gpt4 book ai didi

sql - 在分层 sql 中查找重复/重复的行

转载 作者:行者123 更新时间:2023-12-04 21:27:28 25 4
gpt4 key购买 nike

我正在尝试检测分层表中的重复/重复值。

考虑以下(稍微做作的)示例:

SELECT *
FROM emp
START WITH mgr IN (SELECT empno FROM emp WHERE ename = 'JONES'
UNION ALL
SELECT empno FROM emp WHERE ename = 'JONES')
CONNECT BY PRIOR empno = mgr;

返回...
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7369 SMITH CLERK 7902 17-DEC-80 800 20

其实我想要的是...
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7369 SMITH CLERK 7902 17-DEC-80 800 20
7369 SMITH CLERK 7902 17-DEC-80 800 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20

即我希望每一行返回的次数与它在子查询中存在的次数一样多(忽略顺序)。由于 START WITH 使用 IN 子句,重复值被抑制。是否可以重新组织 SQL 以便我可以执行此操作?

请注意,在我的情况下,子条款不是 UNION,而是一个 SELECT,它可能会从表中返回多个(可能是重复的)值。

我可以通过将值写入临时表然后 GROUPing + COUNTing 在 PL/SQL 中执行此操作,但我更愿意仅在可能的情况下在 SQL 中执行此操作。

如果需要澄清,请告诉我。

谢谢 :-)

编辑:

请注意,子查询可能返回 0...N 个值。

最佳答案

试试这个..

SELECT  EMPNO,ENAME FROM,count(*)as counts   emp group by EMPNO,ENAME having count(*)>1

关于sql - 在分层 sql 中查找重复/重复的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1127904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com