Sql 去掉重复的行

Sql 去掉重复的行,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我有以下查询返回重复行,如何消除它们: select a.code, b.daytime, b.created_date from ov a, CURVE b where b.curve_object_id = a.object_id order by b.daytime 我要寻找的是从第二个表中提取对象名称(在我的例子中是代码)的最佳方法,其中两个表中的对象id相同。您是否尝试过按分组来消除重复行,如下所示 select a.code, b.daytime,b.created_date

我有以下查询返回重复行,如何消除它们:

select a.code, b.daytime, b.created_date 
from ov a, CURVE b 
where b.curve_object_id = a.object_id 
order by b.daytime

我要寻找的是从第二个表中提取对象名称(在我的例子中是代码)的最佳方法,其中两个表中的对象id相同。

您是否尝试过按
分组来消除重复行,如下所示

select a.code, b.daytime,b.created_date 
    from ov a, CURVE b 
    where b.curve_object_id=a.object_id 
    group by a.code, b.daytime,b.created_date 
    order by b.daytime

始终使用现代显式联接语法

也就是说,您可以在选择中使用
distinct

select distinct a.code,
    b.daytime,
    b.created_date
from ov a
join CURVE b on b.curve_object_id = a.object_id
order by daytime

在TSQL中有不同的定义,但我不确定OracleThis是否明确。什么构成“重复”?在文本中,你说你想“提取”(不管是什么意思)对象名(在你的例子中是代码),但在查询中,你选择了代码、日期和创建日期。那么到底是哪一个呢?你想要代码,还是三个都想要?什么是“重复”——代码相同的行?(这不是“duplicates”的定义-duplicates是所有值相等的行-但我猜您可能以非技术性的方式使用“duplicates”)。很抱歉,不清楚Duplicate行,table ov是只存储单个代码名和与代码名关联的对象id的表,表格曲线是每日数据,因此它可以是多个具有相同代码名但日期不同的记录(日间列)。是否因为数据重复而有重复的行?还是因为缺少联接条件而有重复的行?我见过这样的情况,其中任何一种情况都已通过分组“修复”。对于一个小的测试数据集,它工作得很好。但当数据集变得庞大时,你可能会发现自己处于一个受伤的世界。也许你可以详细说明你想要实现什么?对图们说:谢谢,这很好。对于BobC:表曲线中并没有重复数据,可能是因为缺少连接条件。因此,您所说的分组方式对于大型数据集不是一个好的选择,那么对于大型数据集,什么是最好的选择呢?