Sql 选择Distinct From Table-两列不应重复

Sql 选择Distinct From Table-两列不应重复,sql,oracle,Sql,Oracle,例如,如何针对包含这些记录的表a进行选择 |Column1|Column2| | A |F | | A | G | | B |G | | B |H | | C |H | | D |H | | E |I | 我的预期结果是: |Column1 |Column2| | A | F | | B | G | | C | H |

例如,如何针对包含这些记录的表a进行选择

|Column1|Column2|
| A      |F     |
| A      | G    |
| B      |G     |
| B      |H     |
| C      |H     |
| D      |H     |
| E      |I     |
我的预期结果是:

|Column1 |Column2|
| A      | F     |
| B      | G     |
| C      | H     |
| E      | I     |
所有列中都应有唯一的值

我可以为此使用什么查询语句

谢谢

请尝试:

select 
    MIN(Column1) Column1, 
    Column2 
from(
    select 
        Column1, 
        MIN(Column2) Column2 
    from YourTable
    group by Column1 
)x group by Column2
order by 1

它在这种情况下不起作用

create table YourTable (Column1 varchar2(10), 
                        Column2 varchar2(10));

insert into YourTable values ('B','F');
insert into YourTable values ('B','G');
insert into YourTable values ('B','H');
insert into YourTable values ('C','F');
insert into YourTable values ('C','G');
insert into YourTable values ('C','H');
insert into YourTable values ('D','F');
insert into YourTable values ('D','G');
insert into YourTable values ('D','H');
我的期望是

B、F CG D H

但我只有

B、F

非常感谢

SELECT a.val, b.val FROM
(
 SELECT val, rownum as rno 
  FROM
  (
   SELECT distinct column1 as val
     FROM YourTable 
  )) a,
  (
   SELECT val, rownum as rno 
     FROM
  (
    SELECT distinct column2 as val
      FROM YourTable 
  )) b
  WHERE a.rno = b.rno
  ORDER BY 1
  /

VAL VAL_1
-----------
 B  F
 C  G
 D  H


因此,您希望显示所有column1值和所有column2值,然后对它们进行过滤,以便仍然显示所有值,但没有一个是重复的?这是一个非常奇怪的要求。为了保证您必须编写一个循环所有组合的过程,直到它成功或结束而不成功。有没有一种方法只允许查询?如果其他方法都失败了,我计划用Java来做。但我希望尽可能只通过查询来处理它。正如我已经说过的,您的请求看起来很奇怪,您可能需要仔细考虑一下。给出所有值a、B、C、D……的列表很容易,但使用给定的组合并尝试删除这一行或那一行,直到最终结果包含所有值,但没有重复值,只能通过尝试和错误来完成-可能需要一些模糊逻辑的帮助。SQL无法为您做任何事情。请删除此帖子。本节仅用于回答问题。若要评论或要求作者澄清,请在其帖子下方留下评论。此外,您还可以编辑您的问题,并使用此处发布的数据更改示例数据。
select column1 as val from YourTable 
UNION
select column2 from YourTable 

VAL
-----
B
C
D
F
G
H