我正在尝试编写合并查询以从表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)中的任何一个,但不能同时返回两者。
答案 0 :(得分:1)
如果特定对(col3
,col1
)col2
中有多个不同的值,则您必须选择我在此处使用的其中一个max
(但你可以使用其中任何一个Aggregate Functions (Oracle)):
select col1, col2, max(col3)
from A
group by col1, col2