我正在使用Oracle SQL,并在查询特定列的不同值时尝试获取所有返回的列。我尝试使用在这里找到的其他答案,但未获得预期的结果。
以下是不重复字段查询(返回3203个结果):
select distinct name
from relationships;
我的尝试基于在SO上找到的其他答案(返回2071个结果):
select *
from (
select relationships.*, row_number()
over (partition by name order by dbms_random.random)
as row_number
from relationships
) relationships
where row_number = 1;
因此,由于两个查询之间的差异如此之大,我要获得多少结果,因此我在这里一定做错了。
答案 0 :(得分:0)
我也无法复制您的问题。
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;
如果确实发生此问题,则一个表中的行应该不在另一个表中。