oracle 解释它的工作原理和返回的唯一值|SQL语言

fruv7luv  于 2023-03-22  发布在  Oracle
关注(0)|答案(1)|浏览(316)

我有一个叫dummy的表,里面有一些记录.
在一个论坛我发现这个查询,但无法解密它是如何工作的
有没有人能用一些例子或图形来帮助我理解它

表格结构

create table 
(
   srno number,
   name varchar2(250)
);

我的密码:

SELECT
   *
FROM
    dummy a
WHERE
    1 = (
        SELECT 
            COUNT(1) as cnt 
        FROM
            dummy b
        WHERE
                a.srno = b.srno
            AND a.name = b.name
            AND a.rowid >= b.rowid
    );
vsdwdz23

vsdwdz231#

SELECT
   *
FROM
    dummy a
WHERE
    1 = (
        SELECT 
            COUNT(1) as cnt 
        FROM
            dummy b
        WHERE
                a.srno = b.srno
            AND a.name = b.name
            AND a.rowid >= b.rowid
    );

WHERE子句中使用的子查询被称为 * 相关子查询 *。它是“相关的”,因为它的WHERE子句中的条件将子查询的记录与主查询的记录相关联。
它查找的是同一个表中的记录,这些记录与主查询中的记录共享srnoname,但其中rowid不同。所以它说“从dummy中选择所有共享此dummy记录的srnoname但不是此确切记录的记录。然后它”s计算符合条件的记录数。如果符合条件的记录数为1,则意味着dummy中只有一条记录共享相同的srnoname,因此继续并返回当前记录。
从本质上讲,它是通过srnoname查找同一表中只有一个重复的记录。

相关问题