2017-02-13 76 views
0

我有以下查询返回重复行重复行,如何摆脱掉他们:摆脱掉

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 

什么我要找的是提取对象名的最好方法(在我的情况下,它的代码)从第二个表中的object_id在两个表中是否相同?

+0

在TSQL有不同,但我不知道有关Oracle – Paparazzi

+0

这是不明确。什么构成“重复”?在文本中,你说你想“提取”(无论是什么意思)对象名称(在你的情况下它是代码),但在查询中选择代码AND daytime AND created_date。那么,它是什么 - 你想要代码,还是你想要所有三个?什么是“重复” - 具有相同代码的行? (这不是“重复”的定义 - 重复是所有值相等的行 - 但我猜你可能以非技术方式使用“重复”)。 – mathguy

+0

抱歉不清楚dublicate行,表ov是仅存储单个代码名称和关联对象id与代码名称的表,表曲线是日常数据,因此它可以是具有相同代码名称但具有不同日期的多个记录(白天列) 。 –

回答

0

您是否尝试使用group by来消除重复的行,如下所示?

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 
+0

你有重复的行,因为你有重复的数据?还是你有重复的行,因为你有一个缺少连接条件?我已经看到这些情况中的任何一个已经被GROUP-BY“固定”的情况。对于小型测试数据集来说,它工作得很好。但是当数据集变大时,您可能会发现自己处于一个受到伤害的世界。也许你可以详细说明你想要实现的目标? – BobC

+0

Tumen_t:谢谢,这工作正常。 BobC:表曲线中没有重复的数据,可能是因为我缺少连接条件。所以你所说的分组对大数据集来说不是好的选择,那么大数据集最适合什么呢? –

0

始终使用现代显式JOIN语法。

也就是说,你可以在你选择使用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