我有一个叫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
);
1条答案
按热度按时间vsdwdz231#
在
WHERE
子句中使用的子查询被称为 * 相关子查询 *。它是“相关的”,因为它的WHERE
子句中的条件将子查询的记录与主查询的记录相关联。它查找的是同一个表中的记录,这些记录与主查询中的记录共享
srno
和name
,但其中rowid
不同。所以它说“从dummy
中选择所有共享此dummy
记录的srno
和name
但不是此确切记录的记录。然后它”s计算符合条件的记录数。如果符合条件的记录数为1,则意味着dummy
中只有一条记录共享相同的srno
和name
,因此继续并返回当前记录。从本质上讲,它是通过
srno
和name
查找同一表中只有一个重复的记录。