我也不能复制你的问题。
SQL> create table mytable as select object_name, object_type from dba_objects;
Table created.
SQL> insert into mytable select object_name, null from dba_objects;
22491 rows created.
SQL> select count(*) from mytable;
COUNT(*)
----------
44982
SQL> select count(*) from (select distinct object_name from mytable );
COUNT(*)
----------
15701
SQL> select count(*)
2 from (
3 select mytable.*, row_number()
4 over (partition by object_name order by dbms_random.random)
5 as row_number
6 from mytable
7 ) mytable
8 where row_number = 1;
COUNT(*)
----------
15701
我将根据您的两个查询创建表,并查找它们之间的差异。比如:
create table tab1 as select distinct name from relationships;
如果这个问题真的发生了,那么一个表中应该有不在另一个表中的行。