【发布时间】:2012-01-19 22:41:18
【问题描述】:
我正在尝试编写一个合并查询来从表 A 中读取一些数据并合并到表 B 中。
从 A 读取时,我想确保行基于几列是不同的。所以我有一个类似的查询:
从 A 中选择不同的 col1、col2、col3。 但是我希望唯一性在 (col1,col2) 对上。上面的查询仍然会得到对 (col1,col2,col3) 唯一但对 (col1,col2) 唯一的行
有没有其他方法可以实现这一点或使用类似的东西 select distinct(col1,col2),col3 from A.
另外, 我预计 A 会有很多记录 ~10-20 百万。此外,我计划迭代多个这样的表 A [它本身是通过几个连接动态生成的]。希望该解决方案的性能不会更差,但无论哪种情况,我都在寻找一种首先有效的解决方案,然后我可能会部分运行查询。
Oracle 10G 是版本。
谢谢!
更新:我想知道 groupby 是否会调用排序操作,而这会比使用 distinct 更昂贵?
更新:回答以下问题之一:对于 (A, B, C) 和 (A, B, D) 行,您的预期结果是什么? => 假设我想在 (A,B) 上有所不同,返回 (A,B,C) 或 (A,B,D) 中的任何一个都可以,但不能同时返回。
【问题讨论】:
-
我不太明白你想要得到什么。如果您有 (A, B, C) 和 (A, B, D),您的查询应该返回哪一行?还是只希望它返回 (col1, col2) 唯一的情况?
-
不会对所有 3 列 col1、col2、col3 进行分组
-
请回复@eaolson,以便为您提供解决方案。对于 (A, B, C) 和 (A, B, D) 行,您的预期结果是什么?
-
@danihp .. 我已经回答了你的问题。感谢您的帮助
-
那么,@michalpowaga 的回答是对的。