问题是:我在一个表中有两列,对于每个分组,它们的顺序应该相同。在我做出假设之前,我想检查现有数据是否属实。
一些示例数据:
gid c1 c2
1 1 5
1 2 7
2 1 22
2 2 38
2 3 40
3 1 4
3 2 8
3 3 2
如您所见,如果我使用
select * from table t where t.gid = 1 order by c1
结果将是相同的,并且与
select * from table t where t.gid = 1 order by c2
.
结果也将匹配 gid = 2。但是,如果我对 gid = 3 执行相同操作,则顺序将不再匹配。因为在这种情况下, ordering byc2
与 ordering by 的结果不同c1
。
我想检查整个表,以确保按这些列中的任何一个进行排序对于gid
. OracleMINUS
将不起作用,因为它不允许 order by
在子查询中使用。由于 的限制,我的第一次尝试MINUS
是:
select gid, c1, c2 from table order by gid, c1, c2
minus
select gid, c1, c2 from table order by gid, c2, c1;
如果对答案有帮助,我正在使用 oracle 11g。