sql在多个cols上是不同的,但不是所有列

时间:2011-12-14 05:03:54

标签: sql oracle join plsql

我正在尝试编写合并查询以从表A读取一些数据并在表B中合并。

从A读取时,我想确保基于少数列的行是不同的。所以我有一个类似的查询:

从A中选择不同的col1,col2,col3。 但是我想要唯一性(col1,col2)对。上面的查询仍然会得到(col1,col2,col3)唯一的行,但不是(col1,col2)

有没有其他方法可以实现这一目标或使用类似的东西 从A中选择distinct(col1,col2),col3。

另外, 我希望A会有很多记录~1000万到2000万。此外,我计划迭代多个这样的表A [它本身是通过几个连接动态生成的]。希望性能不会差于解决方案,但在任何一种情况下,我都在寻找一个先行的解决方案,然后我可能部分地运行查询。

Oracle 10G是该版本。

谢谢!

更新:我想知道groupby是否会调用排序操作,而不是使用distinct?

更新:回答以下问题之一:对于(A,B,C)和(A,B,D)行,您的预期结果是什么? =>假设我想要(A,B)不同,可以返回(A,B,C)或(A,B,D)中的任何一个,但不能同时返回两者。

1 个答案:

答案 0 :(得分:1)

如果特定对(col3col1col2中有多个不同的值,则您必须选择我在此处使用的其中一个max (但你可以使用其中任何一个Aggregate Functions (Oracle)):

select col1, col2, max(col3) 
from A 
group by col1, col2